數據庫系統和操作系統一樣,在計算機上安裝成功後,還需要進一步配置和優化,從而使其具有更強大的功能和運行在最佳狀態。如果在設計階段因為各種因素沒有進行較為合理的配置和計劃,那麼就需要在後期對數據庫系統進行優化。
數據庫系統性能的優化,除了在設計階段對其邏輯存儲結構和物理存儲結構設計進行優化,使之在滿足需求條件下,時空開銷性能最佳外,還可在運行階段,采取一些優化措施,使系統性能最佳。本專題所討論的性能優化主要指運行階段的性能優化,即討論如何使用Oracle所提供的優化手段來提高系統性能。大多數性能問題並不是一種孤立的症狀,而是系統設計的結果,因此性能優化就集中在那些導致不可接受特征的同一的、固定的和潛在的問題上。優化是數據庫設計中“計劃”、“設計”、“監視”和“優化”四大步驟的最後一步。 除了用Oracle優化器來優化數據庫的性能外,DBA還可通過優化Oracle的參數設置等手段來優化數據庫的性能,對參數的細微優化便能影響系統整體性能。
為了有目的優化系統性能,首先應明確優化目標,然後再根據目標優化各種初始參數的設置,以達到更好效果。可有如下幾個優化目標:
◆ 應用程序設計的優化
◆ 指定類型SQL語句的優化
◆ 內存使用的優化
◆ 數據存儲、物理存儲和邏輯存儲的優化
◆ 網絡通信量的優化
DBA可選定上述一個或多個目標來實施優化。性能優化主要是通過優化初始化參數來實現。本專題從以下幾個方面來談談如何優化Oracle數據庫,使其具有最佳性能。
(1)優化初始參數
(2)優化內存
(3)優化I/O
(4)優化資源爭用
(5)其它參數優化
可變參數的優化
在對Oracle數據庫進行優化時,需要用到許多的參數,其中有一部分參數對系統性能影響較大,這部分參數叫可變參數。可變參數按其作用可以分為兩大類,一大類是起限制作用的,如OPEN_CURSORS;另一大類是影響系統性能的,如DB_BLOCK_BUFFERS。
在進行數據庫系統性能優化時,需要熟練掌握和了解一些可變參數。本文討論了一些對系統性能有較大影響的參數。
限制類可變參數
(1)DML_LOCKS
該參數表明多少個用戶,可同時能修改多少張表。例如:有三個用戶同時修改二張表,則要求表上的總數為6。若置為0,則組織隊列不起作用,其性能會稍有提高。使用該參數時不能用DROP TABLE、CREATE INDEX或顯式封鎖。
(2)LICENSE_MAX_SESSION
該參數指出允許並發用戶會話的最大數。若此參數為0,則不能實施並發。若並發的用戶會話數已達到此極限,則只有具有RESTRICTED SESSION權限的用戶才能連接到服務器。
(3)LICENSE_MAX_USERS
該參數指出在一個數據庫上可建立的最大用戶數。當達到最大值時,便不能再建新用戶,可改變此值以放松限制。在LICENSE_MAX_SESSION或LICENSE_MAX_USER為0時,則並發會話或任何用戶都不能用。若對不同的實例,此參數不同時,則以第一個登錄的數據庫實例的參數為准。
(4)MAX_DUMP_FILE_SIZE
該參數指定操作系統中寫跟蹤文件的塊的最大值。可用此值來限制跟蹤文件的空間。
(5)OPEN_CURSORS
該參數指明一個用戶進程能同時打開光標的最大數,它能限制每個用戶進程占用的內存空間量。
(6)OPEN_LINKS
該參數指定並發連接到遠程數據庫的最大用戶進程數。若同時引用多個數據庫,則應該增大該值。例如:同時交替訪問A、B和C三個數據庫時,若OPEN_LINKS設置為2,則需花費等待連接時間。此參數只用於分布事務。若該參數設置為0,則不允許進行分布事務處理。
(7)PROCESS
該參數指定同時連接到Oracle服務器上的最大用戶進程數。該參數值包括6個後台進程和一個登錄,因此,該參數值為20,則只能有13或14個並發用戶連接到服務器。
(8)ROW_LOCKING
該參數指定行封鎖方式。若設置為“ALWAYS”,則在修改表時只實施行封鎖。若設置為“INTENT”時,則行封鎖只適用於SELECT FOR UPDATE,而在修改時實施表封鎖。
影響系統性能類可變參數
(1)CHECKPOINT_PROCESS
該參數根據是否要求檢查點而設置成TRUE或者FALSE。