Oracle Log File Sync 等待事件分析与优化

需积分: 42 4 下载量 160 浏览量 更新于2024-09-12 收藏 468KB DOC 举报
LOG FILE SYNC概述 LOG FILE SYNC是Oracle中最普遍的等待事件之一,通常log file sync的等待时间都非常短,仅为1-5ms,不会有什么问题。但是一旦出问题,往往都比较难解决。那么,什么时候会产生log file sync等待? log file sync等待可能出现在以下几种情况: 1. commit操作:在提交事务时,需要将日志写入磁盘,导致log file sync等待。 2. rollback操作:在回滚事务时,也需要将日志写入磁盘,导致log file sync等待。 3. DDL操作:在执行DDL语句时,需要将日志写入磁盘,导致log file sync等待。 4. DDL操作导致的数据字典修改所产生的commit:在执行DDL语句时,可能会导致数据字典的修改,进而导致log file sync等待。 5. 某些能递归修改数据字典的操作:例如查询SEQ的next值,可能会导致数据字典的修改,进而导致log file sync等待。 在一个正常的系统中,大多数的log file sync等待都是由commit操作造成的。但是在某些异常的系统中,例如频繁rollback、SEQ的cache设置为nocache的系统,也可能会造成比较多的log file sync等待。 Understanding LOG FILE SYNC 从上面的分析可以看出,log file sync等待是Oracle中最普遍的等待事件之一。那么,什么是log file sync?log file sync是指在提交事务时,将日志写入磁盘的过程。在这个过程中,系统需要等待日志写入磁盘的完成,这个等待时间就称为log file sync等待。 log file sync等待可以分为六个阶段: 1. 用户进程发起commit:用户进程提交事务,开始log file sync等待。 2. 用户进程通知lgwr写日志:用户进程通知lgwr进程将日志写入磁盘。 3. lgwr接收到请求开始写:lgwr进程接收到写日志的请求,开始写日志。 4. lgwr写完成:lgwr进程完成日志的写入。 5. lgwr通知用户进程写完成:lgwr进程通知用户进程日志写入完成。 6. 用户进程获得通知,继续做其他事情:用户进程获得日志写入完成的通知,继续执行其他任务。 在这个过程中,1、2阶段的时间主要是post/wait的时间,典型的这种post/wait一般利用的是操作系统的信号量(IPC)实现。如果系统CPU资源充足,一般不会出现大的延迟。前台进程post lgwr后,就开始等待log filesync。 2、3阶段的时间,主要是lgwr为了获取cpu资源,等待cpu调度的时间。