其實Oracle數據庫性能優化的最終目的就是,盡最大程度的減少磁盤訪問所獲的相關數據。如果我們要對數據庫的實際操作性能進行評估的話,我們就需要在數據庫調節前後比較其評價指標:
響應時間和吞吐量之間的權衡、數據庫的可用性、數據庫的命中率以及內存的使用效率,以此來衡量調節措施的效果和指導調整的方向。
隨著網絡應用和電子商務的不斷發展,各個站點的訪問量越來越大,數據庫規模也隨之不斷的擴大,數據庫系統的性能問題就越來越突出,因此,如何對數據庫進行調優至關重要:如何使用有限的計算機系統資源為更多的用戶服務?如何保證用戶的響應速度和服務質量?這些問題都屬於服務器性能優化的范疇。
作為全球第一大數據庫廠商,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)分開磁盤;
創建表和索引時指定不同的表空間;
創建回滾段專用的表空間,防止空間競爭影響事務的完成;
創建臨時表空間用於排序操作,盡可能的防止數據庫碎片存在於多個表空間中。
2.5確定數據塊大小和存儲參數。
由於數據庫的塊大小在數據庫創建以後就不能在修改(除非重建數據庫),因此為了減少數據鏈接和行遷移,又提高磁盤空間的利用率,在設計數據庫時要確定合適的數據塊大小和存儲參數。通常我們是根據樣例數據確定數據塊大小,而根據業務現狀和未來發展趨勢確定存儲參數。