消除11.2上的db file parallel read

yangtingkun發表於2012-03-27

客戶在11.2.0.3環境中進行壓力測試,發現出現大量的db file parallel read等待事件。

 

 

這個等待是11g以後才出現的,而在11g以前,一般這個等待事件發生在資料檔案的恢復過程中。而11g新增了prefetch的特性,也可能導致這個等待事件的產生。

當執行壓力測試時,後臺的等待事件如下:

SQL> select event, count(*) from v$session where username = user group by event order by 2;

EVENT                                                              COUNT(*)
---------------------------------------------------------------- ----------
SQL*Net message from client                                               1
SQL*Net message to client                                                 1
db file sequential read                                                  24
db file scattered read                                                   33
db file parallel read                                                    42

可以看到使用者程式經歷比較嚴重的IO等待,而此時的db file parallel read,並不會帶來效能提升。

可以透過新增隱含引數的方法來遮蔽prefetch功能,從而避免db file parallel read等待事件的產生:

_db_block_prefetch_limit=0
_db_block_prefetch_quota=0
_db_file_noncontig_mblock_read_count=0

控制檔案新增這三個隱含引數後,重啟資料庫,再次執行壓力測試,發現db file parallel read等待事件已經消失:

SQL> select event, count(*) from v$session where username = user group by event order by 2;

EVENT                                                              COUNT(*)
---------------------------------------------------------------- ----------
SQL*Net message to client                                                 1
db file scattered read                                                   30
db file sequential read                                                  70

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-719997/,如需轉載,請註明出處,否則將追究法律責任。

相關文章