首页 > 数据库 > Oracle > 等待事件之log file sync(原理篇)

√ 前台进程,也就是用户进程发起一个提交或者回滚的操作。
√ 前台进程会通知Lgwr去写日志。
√ LGWR会进行物理写的系统调用。
√ 物理写调用完成。
√ LGWR通知前台进程写入操作已完成。
√ 前台进程显示提交已经完成。
我们可以看到,上述流程中的4个环节都涉及到CPU的调度,如果在整个事务commit的过程中,系统CPU出现极度紧张,那么这可能会导致LGWR进程无法获得CPU,会进行排队等待,显然,这势必将导致log file sync或log file parallel write等待的升高。
1-6为一个完整的log file sync过程,从foreground process提交一个commit/rollback开始到commit 完成。期间3-4是log file
parallel write的过程(主要是真正的物理io时间)。所以log file sync包含了log file parallel write这个过程。正常情况下,3-4也就是说log file parallel write应该是整个log file sync过程中最耗时的,如下图所示

但在实际环境中,1-6各环节受到的影响因素不仅仅来自于I/O,下面的图以cpu资源紧张为前提假设,给出了各阶段的执行时长

涉及到log file sync的一些案例
案例一:http://www.htz.pw/2014/10/21/%E4%B8%80%E6%AC%A1log-file-sync%E7%AD%89%E5%BE%85%E4%BA%8B%E4%BB%B6%E5%88%86%E6%9E%90.html
案例二:http://www.killdb.com/2014/04/20/log-file-sync-%E7%AD%89%E5%BE%85%E8%B6%85%E9%AB%98%E4%B8%80%E4%BE%8B%E5%AD%90.html
案例三:http://www.dboracle.com/archivers/%E4%B8%80%E6%AC%A1%E8%AF%A1%E5%BC%82%E7%9A%84log-file-sync%E5%88%86%E6%9E%90%E5%A4%84%E7%90%86.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29319055/viewspace-2080574/ ,如需转载,请注明出处,否则将追究法律责任。