「log file sync」有三個引數:
p1 = buffer#
p2 = 未使用
p3 = 未使用
buffer#
這個buffer編號(在日誌緩衝區中)的所有改變必須重新整理到磁碟,寫操作的完成保證了交易commit的執行,即使例項crash也會保證commit。因此lgwr的等待就是重新整理這個buffer#。
這種等待完全依賴於lgwr寫出所有必要的redo塊,確保完成後返回給使用者session。等待時間包括了日誌緩衝寫操作和提交操作。等待的時候,每秒都會增加序列號。
查詢阻塞的塊:
如果乙個session持續等待同乙個buffer#,那麼seq#列應該每秒都會增加。否則本地session會出現等待事件超時的問題。如果seq#列持續增長,那麼阻塞程序就是lgwr程序。檢查lgwr正在等待哪些日誌塊的完成因而速度緩慢。
系統級等待:
系統級」log file sync「的等待引數顯示了等待commit完成花費的時間。如果這種等待非常明顯,那麼lgwr快速完整地刷出redo的能力就會有問題。」user commits「統計資料顯示commit的次數。
為了降低「log file sync」的等待,有幾種常用調優的技巧:
>調優lgwr以能滿足重新整理到磁碟的良好效能,例如不用將redo日誌儲存到raid5。
>如果有許多短時間的交易,看看是否可以進行批量交易,這樣可以有更少的commit操作。每次commit都需要確認相關的redo資訊是否重新整理到磁碟。儘管commit是由oracle內部處理的,但是通過批量交易可以降低commit的總體次數,達到乙個非常好的效果。
>是否處理能夠使用commit nowait選項(但在使用前需要理解他的語意)。
>確認任何交易使用nologging/unrecoverable選項是否安全。
>確認redo日誌是否足夠大。擴大redo日誌,以保證日誌切換可以控制在15到20分鐘之間。
log file sync等待的總時間可能會被切分為若干子節或元件。
如果確保上面提到的一些調優技巧已經使用了但你的系統仍舊顯示較高的「log file sync」等待時間,那麼你應該將總等待時間切分為單個的元件,然後調優這些元件,組成乙個最長用時。
log file sync等待可能被切分為以下元件:
1. 喚醒已停止工作的lgwr。
2. lgwr收集需要寫入磁碟與返回的io。
3. 日誌寫io完成的時間。
4. lgwr提交處理io。
5. 寫操作完成後lgwr提交給前台/使用者session。
6. 喚醒前台/使用者session。
基於log file sync切分後的元件的一些調優建議:
2和3累積在"redo write time"統計資訊中。(例如statspack和awr的統計資訊節中)
3是「log file parallel write」等待事件。
5和6隨著系統負載的增加可能變得非常明顯。這是因為即使已經返回請求到前台程序,仍可能需要花費os時間進行排程執行。需要從作業系統級別的監控。
data guard的觀點:
對於data guard,具有非同步傳輸與預設的commit wait功能,以上的調優步驟仍可以使用,除了第三步也包括對於備機redo日誌的網路寫與rfs/redo寫的用時。
log file sync 等待事件 1
log file sync 等待事件 1 log file sync 是等待事件中非常常見的一種,他排在awr的top5中有時是正常情況,有時則需要格外注意。昨天也聽了一次oracle的網路研討會,介紹的是awr相關的分析,從中學習到最重要的一點,就是對於awr報告中若干資訊的判斷不能獨立地看,需要...
等待事件 buffer busy waits
事件引數說明 事件號 145 事件名 buffer busy waits 引數一 file 引數二 block 引數三 9i 原因碼,10g block class 事件說明 一 oracle會話正在等待pin住乙個緩衝區,會話必須在讀取或修改緩衝區之前將該緩衝區pin住。二 在任何時侯只有乙個程序...
GC Blocks Lost等待事件
在oracle rac環境中,無論我們從awr自動負載效能報告 statspack或者grid control中都可以找到oracle資料庫軟體所收集的全域性快取工作負載統計資訊 global cache work load statistics 其中就包含了全域性快取塊丟失 global cach...