摘要: Oracle資料庫是當前應用最廣泛的大型資料庫之一,而其性最佳化直接關係到系統的運行效率。本文以資料庫效能最佳化的基本原則為出發點,闡述了在資料庫設計階段如何避免競爭和如何最佳化資料訪問,在資料庫運行階段如何從作業系統和資料庫執行個體層級上調整記憶體和I/O來達到資料庫效能最佳化的各種技術。
關鍵詞:Oracle資料庫;效能最佳化;記憶體;I/O
1. 引言
隨著網路應用和電子商務的不斷髮展,各個網站的訪問量越來越大,資料庫規模也隨之不斷的擴大,資料庫系統的效能問題就越來越突出,因此,如何對資料庫進行調優至關重要:如何使用有限的電腦系統資源為更多的使用者服務?如何保證使用者的響應速度和服務品質?這些問題都屬於伺服器效能最佳化的範疇。
作為全球第一大資料庫廠商,Oracle資料庫在國內外獲得了諸多成功應用,據統計,全球93%的上市.COM公司、65家"財富全球100強"企業不約而同地採用Oracle資料庫來開展電子商務。我國很多企業、政府單位及電子商務網站也採用了Oracle作為資料庫伺服器。Oracle資料庫伺服器是高度可最佳化的軟體產品,經常性的調整可以最佳化應用系統的效能,防止出現系統瓶頸。
資料庫效能最佳化的基本原則就是:通過儘可能少的磁碟訪問獲得所需要的資料。要評價資料庫的效能,需要在資料庫調節前後比較其評價指標:回應時間和輸送量之間的權衡、資料庫的可用性、資料庫的命中率以及記憶體的使用效率,以此來衡量調節措施的效果和指導調整的方向。
對Oracle資料庫進行效能調整時,應當按照一定的順序進行,因為系統在前面步驟中進行的調整可以避免後面的一些不必要調整或者代價很大的調整。一般來說可以從兩個階段入手:
1、設計階段:對其邏輯結構和物理結構進行最佳化設計,使之在滿足需求條件的情況下,系統效能達到最佳,系統開銷達到最小;
2、資料庫運行階段:採取作業系統級、資料庫級的一些最佳化措施來使系統效能最佳;
2. 在系統設計開發階段調整資料庫
為了充分利用Oracle資料庫的功能特性,在設計資訊系統時,資料庫設計人員需要根據業務情況(如訪問量或用戶端數量)和現有資源狀況(如資料庫伺服器的配置)考慮系統結構和資料庫的邏輯結構的設計:
2.1調整應用程式結構設計。
即應用程式採用的是傳統的C/S兩層體繫結構,還是B/W/D三層體繫結構。不同的應用程式體繫結構要求的資料庫資源是不同的。
2.2恰當使用分區、索引及存檔功能。
如果某種業務的資料量增長非常快,可以考慮存放該業務的資料庫表是否使用Oracle資料庫的資料分割函數;對於經常訪問的資料庫表是否需要建立索引;對於經常訪問但是當商務程序完成後不再變動的資料可採用放入曆史檔案的方法來實現應用系統中訪問儘可能少的資料量。
2.3恰當編寫訪問資料的SQL語句。
良好的SQL語句可以被資料庫重複使用而減少分析時間;恰當的使用索引可使訪問的資料區塊大大減少從而減少回應時間。應用程式的執行最終將歸結為資料庫中的SQL語句執行,因此SQL語句的執行效率決定了Oracle資料庫的效能。Oracle公司推薦使用Oracle語句最佳化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調整最佳化SQL語句。
2.4調整硬碟I/O
這一步是在資訊系統開發之前完成的。資料庫管理員可以將組成同一個資料表空間的資料檔案放在不同的硬碟上,做到硬碟之間I/O負載平衡。在磁碟比較富裕的情況下還應該遵循以下原則:
將表和索引分開;
創造使用者資料表空間,與系統資料表空間(system)分開磁碟;
建立表和索引時指定不同的資料表空間;
建立復原段專用的資料表空間,防止空間競爭影響事務的完成;
建立暫存資料表空間用於排序操作,儘可能的防止資料庫片段存在於多個資料表空間中。