oracle資料庫的效能優化

2021-04-13 00:20:46 字數 4239 閱讀 4634

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能在共享池中保持分析和執行語句,提高語句分析和執行效率,降低資源消耗。通過比較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 =any ('dbblock gets','consistent gets','physical reads');

通過查詢結果

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

如果命中率

<0.6~0.7,則應增大db-block-buffers。

二:調整磁碟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#;

對於使用頻率較高的物理檔案

,可以採用以下策略:

l將 i/o盡可能平均分配在盡可能多的磁碟上。

l為表和索引建立不同的表空間。

l將資料檔案與重做日誌檔案分離在不同的磁碟上。

l減少不經

oracle server的磁碟i/o。

(3)調整競爭

當多個程序對相同的資源發出申請時,產生競爭。

修改process引數

該引數定義可以同時連線到

oracle資料庫的最大程序數,預設值為50。注意,oracle的後台程序也包括在此數目中,建議將該值改為200。

減少排程程序的競爭

減少排程程序的競爭,通過查詢

v$dispatcher表來判定排程程序的競爭  sql>select network,sum(busy)/sum(busy)+sum(idle) from v$dispatcher group by network;

如果某種協議忙的比率超過

50%,應增加mts-dispatchers的值。

減少多執行緒服務程序競爭

首先查詢

v$sysstat表判定是否發生多執行緒服務程序競爭:

sql>select decode(totalq,0,'no request',wait/totalq||'hunderths of seconds') from v$sysstat where type='common';

如果共享服務程序數量已達到初始化引數檔案中

mts-max-servers指定的最大值,但應用執行時,平均請求等待時間仍持續增長,那麼,應加大mts-max-servers的值。 (txfy:這句不能正常執行,不知怎麼用,希望各位老大幫忙調整調整)

減少重做日誌緩衝區競爭

通過查詢

v$sysstat表判定redo log 檔案緩衝區是否足夠。

sql>select name,value from v$sysstat where name='redo log space requests';

此處 value的值應接近於0,否則,應增大初始化引數檔案的log-buffeqs的值。

減少回退段競爭

回退段對效能也有影響,根據事物大小情況來分配合適的回退段。

首先判定回退段的數量能否滿足系統執行的需要:

查詢 v$waitstat表與v$sysstat表

select class,count from v$waitstat where class in ('system undo header','system undo block','undo header','undo block');

sql>select sum(value) from v$sysstat where name in ('db block gets','consistent gets');

如果任何乙個

class/sum(value)>10%,那麼考慮增加回退段。回退段的數量一般按如下規律設定:

使用者數          回退段個數

n<16          

416 32<=n        

n/4 但不超過50

減少free list競爭

當多個程序同時向乙個表中插入資料時,產生

free list競爭。

sql>select class,count from v$waitstat where class='free list';

sql>select sum(value) from v$sysstat where name in ('db block gets','consistent gets');

如果 class/sum(value)>1%,則應增加該錶的free list 的值。

優化Oracle資料庫效能

優化策略 為了保證oracle資料庫執行在最佳的效能狀態下,在資訊系統開發之前就應該考慮資料庫的優化策略。優化策略一般包括伺服器作業系統引數調整 資料庫引數調整 網路效能調整 應用程式sql語句分析及設計等幾個方面,其中應用程式的分析與設計是在資訊系統開發 分析評價oracle資料庫效能主要有資料庫...

Oracle資料庫效能優化

url size medium 為了保證oracle資料庫執行在最佳的效能狀態下,在資訊系統開發之前就應該考慮資料庫的優化策略。優化策略一般包括伺服器作業系統引數調整 資料庫引數調整 網路效能調整 應用程式sql語句分析及設計等幾個方面,其中應用程式的分析與設計是在資訊系統開發。分析評價oracle...

Oracle資料庫效能的優化

隨著網路應用和電子商務的不斷發展,各個站點的訪問量越來越大,如何使有限的計算機系統資源為更多的使用者服務?如何保證使用者的響應速度和服務質量?這些問題都屬於伺服器效能優化的範疇。作為較成功的資料庫廠商,oracle公司資料庫的效能優化是如何進行的 優化策略 為了保證oracle資料庫執行在最佳的效能...