log file sync:該等待事件發生在redo log 從 log buffer寫入到log file期間
當用戶進程提交時,會通知LGWR將redo buffer寫入到redo file中,當LGWR進程完成寫入操作后,LGWR在通知用戶進程寫入完成。用戶進程接收到LGWR通知后才會完成提交。因此用戶進程在沒有收到LGWR通知之前一直處于等待狀態,就會產生log file sync。
發生日志寫入的條件:
1、commit
2、每隔3秒鐘將日志緩沖區輸出
3、當日志緩存區已寫滿三分之一時
4、在DBWR將臟數據寫入到數據文件之前
5、當log buffer 大于1M時
引起 log file sync的原因:
1、頻繁的提交或rollback,檢查應用是否有過多的短小的事物,如果有,可以使用批處理來緩解
2、過大的日志緩沖區,因為log buffer中的數據量無法達到log_io_size,導致更多的重做條目堆積在日志緩沖區,此時當事務提交或3s醒來時,LGWR會把所有數據都寫入到redo file中,由于數量過多,LGWR要用更多的時間等待redo寫完完畢(此種情況可以調小log_io_size參數,其默認值是log_buffer 的1/3或1M,去兩者中較小的值。)——可以具有很大的日志緩沖區,但較小的log_io_size將增加后臺寫入次數,從而減少log file sync的等待時間。
3、CPU負載高,LGWR無法及時獲取CPU調度,出現 log file sync
4、log file sync 平均等待時間超過7ms,說明log write 每次寫入時間過長
解決方法:
1、查看日志提交是否頻繁,如果過于頻繁應盡量減少commit
2、確保CPU資源充足
3、建議加大日志緩沖區
4、優化redo日志文件存儲,存放在更快的磁盤上
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。