监控所有索引

Monitor on all indexes

我正在使用 Oracle 11g。

很多时候需要打卡

stats$

表和快照表,如果索引已使用或未使用。

我的问题是 - 使用时有什么缺点或问题吗

MONITORING USAGE

我所有的索引?把它们都放在里面。

也许构建一个在每个新索引上执行它的过程?

非常感谢。

12.2 之前的索引监控存在严重问题:

1) 布尔标志通常不足以做出关于是否保留索引的合理决定。该索引使用了 1 次是因为开发人员使用提示强制索引还是索引被调用了数百次?

2) 检查发生在解析阶段,而不是执行阶段。 (请参阅上一点为什么这是一个问题)。

3) 对性能有影响。虽然这种性能影响很小,尤其是如果您只为单个索引打开它,但如果您尝试为系统范围内的所有索引打开它,这种影响会更加显着。

索引监控旨在为单个索引(或一小组索引)打开,等待一些合理的时间,然后将其关闭并检查统计信息。它并不意味着一直在线。

在 12.2 中,索引监控被彻底修改,所有索引都默认启用(我很确定你甚至无法关闭它)。 Oracle 已经在很大程度上解决了 Oracle 之前版本中索引监控的大部分问题:性能影响微不足道,更有意义的统计信息(实际使用次数的计数),并且统计信息在执行阶段更新,而不是解析阶段。

Tim Hall 写了一篇关于索引监控的好文章 here. Connor McDonald has an excellent YouTube video on why Index Monitoring had issues pre-12.2, and what Oracle has done to address these issues here(从 19:15 - 27:05 开始观看)。