oracle buffer busy waits等待的含義

wanglinghua0907發表於2023-12-29

buffer busy waits:讀不堵塞寫,寫堵塞讀。


一個會話讀、另個會話寫這個buffer,寫的同時又有個會話讀這個buffer產生等待buffer busy waits


oracle修改一個buffer的步驟。

減少2-7步驟的時間可以減少buffer busy waits。

期間主要工作就是  生成redo和修改buffer中的內容。修改buffer內容是呼叫系統函式memcpy完成,幾乎沒最佳化空間。

主要是在生成redo上。


生成redo簡單流程是:

在pga中記錄後映象資料,傳到共享池,然後傳到log buffer中,如果log buffer沒空間,程式會先等LGWR重新整理

log buffer中的空間,騰出空間後才能繼續(此時等待為log buffer space)。


產生redo遭遇log buffer沒空間的情況有時候還是存在的,產生redo花費時間大大增加。

因此, 保證log buffer有空間可以減少buffer pin鎖的持有時間


Log buffer沒空間的原因是產生的redo太多或者LGWR寫的太慢。redo過多為應用問題,無法改變。

LGWR寫的慢是IO慢,加快IO寫的效能,可以提高log buffer中空閒空間比例,可以增加redo產生的速度,

減少獨佔buffer pin鎖的持有時間。


所以把redo放在更快的儲存裝置上,可以減少buffer busy waits時間。


buffer busy wait

1.抬高高水位線

2.buffer busy wait主要由寫堵塞寫或者寫堵塞讀,減少寫操作的持有buffer pin(X獨佔)鎖的時間,整體上buffer busy wait會下來。



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

相關文章