暂无图片
为什么Oracle热表上会出现超出期望的I/O?
我来答
分享
晴天
2023-06-29
为什么Oracle热表上会出现超出期望的I/O?

有这么一种情况:生产系统负载很高,一个查询使用的I/O比开发测试系统观察到的要多得多;然后,再在测试环境中恢复这个生产实例,再测试这条查询,I/O却降下来了,但在生产环境中,它又变得非常高(而且好像还有些变化:有时高,有时低,有时则处于中间)。

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

造成这种现象的原因可能是:测试系统是一个独立的系统(可能没有多少事务),所以不必撤销事务所做的修改。而在生产系统中,由于它有很高的负载,当读取某一个数据块时,数据库可能需要回滚多个事务对其做的修改,而每个回滚都可能需要I/O获取undo信息来完成这个撤销的动作。

这种情况在高并发修改的表上很常见,查询这样的表会大量读取undo段,只有这样Oracle才能将块恢复到查询开始时的样子。

暂无图片 评论
暂无图片 有用 6
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交