萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle幾種性能調優方法

Oracle幾種性能調優方法

Oracle是一個高性能數據庫軟件。用戶可以通過參數的調整,達到性能的優化。性能優化主要分為兩部分:

一是數據庫管理員通過對系統參數的調整達到優化的目的;

二是開發人員通過對應用程序的優化達到調整的目的。

在此,僅就系統參數的調整進行探討,而不涉及應用程序的優化。對系統參數的調整,可以分為以下幾個部分:

調整內存分配

系統全局區(SGA)是一個分配給Oracle 包含Oracle 數據庫實例控制信息的內存段。SGA的大小對系統性能的影響極大,其缺省參數設置只適用於配置很低的計算機,不適應收入系統現有設備的需要。這些參數若不作調整,會對系統資源造成巨大浪費。就收入系統的Alpha 1200而言,SGA的大小以160兆左右為宜。

初始化參數文件中的一些參數對SGA的大小有決定性的影響。參數DB-BLOCK-BUFFERS(SGA中存儲區高速緩存的緩沖區數目),參數SHARED-POOL-SIZE(分配給共享SQL區的字節數),是SGA大小的主要影響者。

DB-BLOCK-BUFFERS參數是SGA大小和數據庫性能的最重要的決定因素。該值較高,可以提高系統的命中率,減少I/O。每個緩沖區的大小等於參數DB-BLOCK-SIZE的大小。Oracle數據庫塊以字節表示大小。

Oracle SGA區共享池部分由庫高速緩存、字典高速緩存及其他一些用戶和服務器會話信息組成,共享池是最大的消耗成分。調整SGA區各個結構的大小,可以極大地提高系統的性能。

調整Library Cache

庫高速緩存(Library Cache)中包含私用和共享SQL區和PL/SQL區。調整SGA的重要問題是確保庫高速緩存足夠大,以使Oracle能在共享池中保持分析和執行語句,提高語查詢V$LIBRARYCACHE 數據字典視圖句分析和執行效率,降低資源消耗。通過比較Library Cache的命中率來決定它的大小。(其中,pins表示高速緩存命中率,reloads表示高速緩存失敗)

SQL〉SELECT SUM(pins),SUM(reloads) FROM v$librarycache;

如果sum(reload)/sum(pins)≈0,說明Library Cache的命中率比較合適,若大於1,則需要增加共享池(SHARED-POOL-SIZE)的大小(在初始化參數文件中)。

調整數據字典高速緩存(Dictionary Cache)

數據字典高速緩存包括了有關數據庫的結構、用戶、實體信息等。數據字典的命中率對系統有很大的影響。命中率的計算中,getmisses 表示失敗次數,gets表示成功次數。

查詢V$ROWCACHE表:

SQL>SELECT (1-(SUM(getmisses)/(SUM(gets)+SUM(getmisses))))*100
FROM v$rowcache;

如果該值>90%,說明命中率合適。否則,應增大共享池的大小。

調整數據庫緩沖區高速緩存

Oracle 在運行期間向數據庫高速緩存讀寫數據,高速緩存命中表示信息已在內存中,高速緩存失敗意味著Oracle必需進行磁盤I/O。保持高速緩存失敗率最小的關鍵是確保高速緩存的大小。初始化參數DB-BLOCK-BUFFERS控制數據庫緩沖區高速緩存的大小。可通過查詢V$SYSSTAT命中率,以確定是否應當增加DB-BLOCK-BUFFERS的值。

SQL>SELECT name,value FROM V$SYSSTAT
WHERE name IN (’dbblock gets’,’consistent gets’,’physical reads’);

通過查詢結果

命中率=1-physical reads/(dbblock gets+consistent gets)

如果命中率<0.6~0.7,則應增大DB-BLOCK-BUFFERS。

  • 共3頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved