当我需要运行进程来重建索引时,我如何知道我需要重建哪些索引?
3 回答
在这里阅读http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2913600659112关于重建索引。重建位图索引是可以的,但 btree 索引不是这样。
定期重建索引是许多人信奉的宗教,但很少有人能证明这一点。几乎所有为它制作的案例都是错误的,通常是因为它具有意想不到的副作用,例如随着索引返回到其稀疏的自然状态,由于块拆分而增加了后续系统负载。
在考虑重建索引之前,您应该首先研究索引是如何工作的,如何创建和删除条目,以及拥有紧凑或稀疏索引对性能的影响——通过谷歌不难找到这些信息。
还要考虑合并操作而不是重建。
一般来说,当索引和表变得过于碎片化时,应该重建它们。
在实践中,您可能不需要使用 Oracle 10g 执行此操作。碎片发生在表和索引上,对结构有很多更改(添加/删除列)和大量数据更改(插入、更新、删除)。
从 v10 开始,Oracle 拥有许多关注数据库性能的自动化流程。其中之一是自动运行的“Segment advisor”。
如果这是 Oracle 10g 的完整版(不是 express),那么您就有了数据库管理器仪表板。
在那里您会找到“顾问中心”,您可以在其中找到 Oracle 各个部分的维护信息。
除此之外,还有“Segment advisor”报告,您可以在其中找到性能改进建议。您可以在此处选择推荐的操作并告诉 Oracle 执行此操作。
如果您对某些表或索引的性能存有疑虑,您可以按需执行分析,您将获得建议是否应该重建表或索引。
如果您拥有包含大量用户和大量更改的大型数据库,则可以每天检查它。