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