ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 第7 章、解释与延迟有关的等待事件

第7 章、解释与延迟有关的等待事件

原创 Linux操作系统 作者:红叶DBA 时间:2011-02-28 13:28:47 0 删除 编辑

章、解释与延迟有关的等待事件

1.          Log file sync 等待事件:

l  关键思想:

u  Log file sync 等待事件和事务的终止(提交或者回滚)有关。

u  当进程在此事件上等待太久,表明事务太短和过度的提交。

l  促使LGWR 进程写日志的动作有:

1)         每隔秒。

2)      日志缓冲区1/3 已满,或具有1M redo entry 

3)      用户提交。

4)      DBWR 进程发出信号(在记录写入之前,通常是由于脏数据太多,DBWR 急于写脏数据)

l  log file sync 等待事件出现的原因:

1)         高提交频率

2)      缓慢的I/O 子系统

3)      过大的log buffer

2.        Log buffer space 等待事件:

l  除了log buffer space 等待事件之外,Oracle 还在v$sysstat v$sesstat 视图中记录redo buffer allocation retries 统计。一般此事件是有种原因引起:SGA 中日志缓冲区太小;LGWR 写出日志的速度太慢。

3.        Free buffer waits 等待事件:

l  将一个块读入内存之前,Oracle 必须在Buffer cache 中找到能够存放该块的位置,如果没有足够的空间来存放,那么就需要清理LRU 中的块,Oracle 9i 中默认扫描40% LRU ,如果还没有找到,那么就通知DBWR 进程写脏数据,清除足够的位置,当DBWR 进程工作时,Oracle 会话在buffer busy wait 上等待。

l  V$sysstat 中的log buffer inspected log buffer requested 统计信息,记录了Oracle 进程扫描LRU 和请求空缓冲区的次数,如果前者大于后者,则表明系统可能有不正常的情况。

l  会话在log buffer waits 上的等待可能有5 种原因:

1)         低效率的SQL 语句。

2)      不充足的DBWR 进程:

从视图x$kcbwds 中可以查看工作集和DBWR 进程的对应关系:select set_id,dbwr_num from x$kcbwds;

3)      缓慢的IO 子系统。

4)      延迟块清除(delay cleanout 

Oracle DBWR 进程以各种时间间隔将已提交和未提交的块写入到磁盘中,在事物提交时,Oracle 对没有写出的块执行提交清除,对已经写出的块不做处理,这些不做处理的块,在下一次读取时被读取进程执行清除操作,这就是延迟块清除。

5)      较小的缓冲存储器

4.        Write complete waits 等待事件:

l  关键思想:阻止Oracle 修改DBWR 进程正在写入的块。

l  当前台进程想要修改被DBWR 进程标记为“正在写入”的块,而标记为“正在写入”的块是不能被修改的,直到他们被写入磁盘并将标记清除。造成此等待事件的原因通常有:

1)         缓慢的I/O 子系统造成高DBWR 写出时间。

2)      MTTR 太短,造成频繁的写出操作。

3)      DBWR 写出批量尺寸太大,造成每次写出的时间过长。

4)      Oracle 8i 之前的写出批量是4096 块,从8i 开始默认写批量的大小改为204 块。

5.        Log file switch completion 等待事件:

l  关键思想:较小的日志文件和大量的redo entry 造成了过多的日志切换。

l  我们通常是保持在高峰期间每隔15~30min 切换一次日志文件。

6.        Log file switch(checkpoint incomplete) 等待事件:

l  由于检查点未完成,切换日志的操作被迫等待。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24465008/viewspace-688094/,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2010-08-19

  • 博文量
    54
  • 访问量
    70921