暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

等待事件:enq: KO - fast object checkpoint 的成因

原创 eygle 2020-08-11
5959

在 Oracle 数据库中,等待事件 enq: KO - fast object checkpoint 并不常见,在以下来自 11.2.0.4 RAC 集群环境的 AWR 报告中,可以看到 enq: KO - fast object checkpoint 已经名列前茅,成为一个值得注意的事件。

Top 10 Foreground Events by Total Wait Time

EventWaitsTotal Wait Time (sec)Wait Avg(ms)% DB timeWait Class
reliable message6,993,9002348.3K39136.7Other
direct path read6,902,8131891.2K32723.3User I/O
enq: KO - fast object checkpoint11,099,9501839.5K17226.8Application
db file sequential read917,141186.8K2062.9User I/O
DB CPU 49.7K .8 
read by other session29,5086851.7240.1User I/O
control file sequential read89,4116153.477.1System I/O
db file parallel read30,4574902.7166.1User I/O
gc buffer busy acquire28,9394275.3174.1Cluster
gc current block busy9,8243125.4328.0Cluster

通过 v$Lock_type 视图,我们可以获得这个等待事件的释义:

SQL> select type,description from v$lock_type where type='KO';

TYPE	   DESCRIPTION
---------- ----------------------------------------------------------------------
KO	   Coordinates checkpointing of multiple objects

KO 是 Coordinates 的缩写,等待事件的含义是:协调多个对象的检查点执行。这个等待意味着进程向CKPT进程发出了对象检查点的指令,转而处于等待,等候检查点的完成。

那么为什么出现这个等待事件呢?
这是因为当执行 Direct Path Read 时,会出发对象检查点,促使写出内存中的脏数据,以使得直接路径读可以读取满足一致性要求的数据。

所以在这个案例中,由于11g的 Searial Table Scan 新特性,使得全表扫描通过 Direct Path Read 的方式执行,进行触发了对象检查点,enq KO 等待就出现了。

解决这个问题,首先需要确认,全表扫描是否是正常的,如果频繁的全表扫描,可以关闭串行表扫描的特性,通过Buffer Cache读来规避这个问题。

在这个案例中,是因为执行计划改变,导致的问题。解决了SQL问题,系统性能状况立刻获得好转。

最后修改时间:2020-08-14 18:13:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论