一、基本概念
当进程执行 commit 或 rollback 时, LGWR 后台进程会将 redo log buffer(sga) 中刚写入的日志记录写入至 online redo logfile ; 从前台进程命令发出到返回执行结果的这个时间内出现的等待称之为 log file sync 。log file sycn是oracle里最普遍的等待事件之一,一般log file sycn的等待时间都非常短, 在正常情况下log file sync平均等待时间应该小于10ms。二、过程原理
上图为log file sync产生的过程:
√ 前台进程,也就是用户进程发起一个提交或者回滚的操作。
√ 前台进程会通知Lgwr去写日志。
√ LGWR会进行物理写的系统调用。
√ 物理写调用完成。
√ LGWR通知前台进程写入操作已完成。
√ 前台进程显示提交已经完成。
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资源紧张为前提假设,给出了各阶段的执行时长
我们可以看到,上述流程中的4个环节都涉及到CPU的调度,如果在整个事务commit的过程中,系统CPU出现极度紧张,那么这可能会导致LGWR进程无法获得CPU,会进行排队等待,显然,这势必将导致log file sync或log file parallel write等待的升高。
涉及到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博客 ” ,链接:http://blog.itpub.net/29319055/viewspace-2080574/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29319055/viewspace-2080574/