2014-12-02 98 views
2

定期运行脚本并重建所有索引(如每周或每天)是否可靠和健康?它是否有可能导致数据问题或冗余系统?我们可以信任索引重建查询吗?定期重建索引有什么优点和缺点

alter index SYS_C0078275 rebuild;     
alter index SHOPPER_ID rebuild; 
+1

_“是否有机会导致数据问题或制作冗余数据?”_你的意思是,有一些行没有索引?或索引两次? _“我们可以信任索引重建查询吗?”_索引是RDBMS的一个关键特性 - 如果你不能“信任”它们,那么可能是切换到另一个RDBMS供应商的时候了......也就是说,我让其他答案,如果这是可取的或不每天重建您的指数。 – 2014-12-02 22:45:01

回答

3

通常,索引不需要在Oracle中重建。一般来说,你所做的是为数据库造成额外的工作,并且(除非你有企业版并正在进行在线重建)为你的应用程序增加了额外的停机时间。对于包含大量随机插入的列(例如名称)的索引,您可能需要一个处于良好稳定状态的索引,并进行大量工作来压缩它,只有Oracle在下一个阶段才能完成大量工作一周来分裂一堆块以恢复到稳定状态。另外,还有一项工作必须加以监控,可能会失败等等。一般来说,上涨空间很小(涉及对索引进行全面扫描的查询可能会稍微快一点),而且很多潜在的缺点,所以这不是我会推荐做的事情。

也就是说,大量网站定期进行索引重建。如果您已经有一个停机时间窗口来重建,性能下降可能不会有问题。有可能你有一个罕见的系统有一个或两个实际上受益于定期重建的索引(尽管你更希望修复造成索引需要重建的潜在问题)在这种情况下,重建一切都可能是有益的,即使它是过度杀伤。

关于索引重建的规范性讨论是Richard Foote的Rebuilding the Truth。如果你想要更详细的讨论,那就是你想去的地方。

相关问题