暂无图片
在数据库重启前有条sql执行时间很长,重启后快了很多
我来答
分享
豆宇斯
2022-09-16
在数据库重启前有条sql执行时间很长,重启后快了很多

一套Oracle 19c RAC,在数据库重启前有条sql执行时间很长,重启后快了很多,重启前后的执行计划是一样的,sql内容如下

数据库重启前定位到sql涉及到的表SYSTEM.LOGMNR_RESTART_CKPT$存在HWM问题,4k行数据120G体积,所以怀疑是HWM导致的执行慢,但是在只重启并没有做shrink等操作来降低HWM后却执行变快了。

重启前的10046可以看到有很多物理读

重启后db file sequential read几乎消失

因为一直存在SGA不足的问题,数据库配置SPA98G,PGA18G,ADDM建议增加到130G和40G,所以怀疑是SGA不足导致频繁出现物理读的情况

但是我理解按照LRU算法,如果重启前频繁物理读说明至少和其他sql相比,这条sql读取的block不算热块,不然第一次物理读读到buffer cache后就不会被刷出去导致第二次物理读吧,如果是这样的话,那为什么重启后就一直是逻辑读了

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
张sir

提供这么一种思路:你数据库长时间没重启,buffer cache里有碎片,重启前,这个表涉及的block频繁被flush出去。重启后碎片少了,这个表的block可以在buffer cache里保持住了。

暂无图片 评论
暂无图片 有用 0
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏