oracle|資料|資料庫|效能 oracle是一個高效能資料庫軟體。使用者可以通過參數的調整,達到效能的最佳化。效能最佳化主要分為兩部分:一是資料庫管理員通過對系統參數的調整達到最佳化的目的,二是開發人員通過對應用程式的最佳化達到調整的目的。
在此,僅就系統參數的調整進行探討,而不涉及應用程式的最佳化。對系統參數的調整,可以分為以下幾個部分:
(1)調整記憶體配置
系統全域區(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能在共用池中保持分析和執行語句,提高語句分析和執行效率,降低資源消耗。通過比較Library Cache的命中率來決定它的大小。查詢V$LIBRARYCACHE 資料字典視圖(其中,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。
(2)調整磁碟I/O
磁碟I/O是系統效能的瓶頸,解決好磁碟I/O,可明顯提高效能。通過查詢V$FILESTAT可以知道每個物理檔案的使用頻率(phyrds表示每個資料檔案讀的次數,phywrts表示每個資料檔案寫的次數)
SQL>SELECT name,phyrds,phywrts
FROM v$datafile df,v$filestat fs
WHERE df.file# =fs.file#;
對於使用頻率較高的物理檔案,可以採用以下策略:
.將I/O儘可能平均分配在儘可能多的磁碟上。
.為表和索引建立不同的資料表空間。
.將資料檔案與重做記錄檔分離在不同的磁碟上。
.減少不經oracle SERVER的磁碟I/O。
[1] [2] 下一頁