每隔一段时间,我们就需要在Oracle中重建索引,因为随着时间的推移,索引变得支离破碎。这会导致其性能(以及扩展)导致数据库查询的性能下降。因此,不时地重建索引会非常有益。话虽如此,索引不应该经常重建,因为这是一项资源密集型任务。更糟糕的是,当重建索引时,锁将被放置在索引上,从而阻止任何人在重建期间访问它。任何尝试访问此索引以返回所需结果的查询都将被暂时阻止,直到重建完成。
在今天的文章中,我们将学习建立索引的频率以及如何确定何时需要重建索引。
重建索引的频率
如引言中所述,重建索引既耗费资源又是阻塞任务。这两方面的考虑使它成为脱机活动的理想选择,当要访问尽可能少的用户访问数据库时就可以运行它。通常,这意味着在计划的维护时段内。
制定关于何时以及多长时间重建索引的全面计划实际上是不可行的。这些决定在很大程度上取决于您使用的数据类型以及所使用的索引和查询。考虑到这一点,这里有一些有关何时重建索引的准则:
每晚重建索引
如果索引迅速碎片化,并且您有一个夜间维护窗口,除所有其他维护任务外,它还允许您运行“重建索引”任务,那么请务必继续。
每周至少
如果您无法每晚重建索引,则应至少每周执行一次。如果等待时间超过一周,则由于浪费的空白空间和逻辑碎片而带来的负面影响,就有可能损害SQL Server的性能。
替代排程
如果没有维护窗口至少每周一次执行此任务,那么您需要密切注意索引的运行情况。
确定是否需要重建索引
在Oracle中,您可以使用ANALYZE INDEX VALIDATE STRUCTURE命令来了解索引的当前状态。
有两个经验法则可以帮助确定是否需要重建索引:
如果索引的高度大于四,则重建索引。
删除的叶行应少于20%。
重建索引
在Oracle中,您可以使用Alter Index Rebuild命令来重建索引。它重建空间索引或分区索引的指定分区。
ALTER INDEX REBUILD命令具有以下几种形式:
ALTER INDEX [schema.]index REBUILD
[PARAMETERS ('rebuild_params [physical_storage_params]' ) ]
[{ NOPARALLEL | PARALLEL [ integer ] }] ;
或者:
ALTER INDEX [schema.]index REBUILD ONLINE
[PARAMETERS ('rebuild_params [physical_storage_params]' ) ]
[{ NOPARALLEL | PARALLEL [ integer ] }] ;
或者:
ALTER INDEX [schema.]index REBUILD PARTITION partition
[PARAMETERS ('rebuild_params [physical_storage_params]' ) ];
处理无法使用的索引
重建
使无法使用
结论
重新创建现有索引或其分区或子分区之一。如果索引标记为不可用,则重建成功将标记为可用。
使索引不可用。在使用无法使用的索引之前,必须对其进行重建,删除或重新创建。
在今天的博客中,我们了解了建立索引的频率以及如何确定何时需要重建索引。
如果您想购买Navicat for Oracle的正版授权,欢迎。
标签:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果