ITPub博客

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

等待事件之log file sync(原理篇)

原创 Oracle 作者:llgxy1 时间:2016-04-13 16:30:07 0 删除 编辑

一、基本概念

        当进程执行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博客 ” ,链接:https://blog.itpub.net/29319055/viewspace-2080574/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-05-09

  • 博文量
    6
  • 访问量
    26623