你应该多久重建一次索引?

我最近接管了一个项目,并且他们有一个SQL作业设置,每三个小时运行一次,以重建在ASP.NET成员资格数据库表中找到的索引。

这似乎相当高,每天重建索引8次。 我每天约有2000名新用户,总共约有200万注册用户。

你有什么建议,以适当的索引重建计划?


你的僵局肯定与索引的重建有关。 毫无疑问,这些索引不需要经常重建。 尽管您应该考虑使用ONLINE选项,但如果可以在重建之前保持索引不被删除,至少应该考虑使用ONLINE选项。

以下是我们使用的指南:

索引碎片大于40%时应重建索引。 当索引碎片在10%到40%之间时,索引应该重新组织。 索引重建过程使用更多CPU并锁定数据库资源。 SQL Server开发版和企业版具有选项ONLINE,可在重建索引时启用。 在线选项将在重建期间保持索引可用。

来源:http://blog.sqlauthority.com/2007/12/22/sql-server-difference-between-index-rebuild-and-index-reorganize-explained-with-t-sql-script/


一个好的经验法则是REBUILD,当30%以上的支离破碎时,REORGANIZE在10%到30%之间。

不要为小于1000页的表格而烦恼,你不会注意到,即使运行一个超过30%的REBUILD,它通常也会保持在30%。

您可能应该针对平均数据库,最多不超过一周地进行重建/重组。 如果您不得不经常对这些索引进行碎片整理,那么您可能需要重新查看您的填充因子和填充。

批量数据加载之后是一个例外情况,在这种情况下,可能通常会对索引进行分段(有时最好禁用索引或删除索引并重建,或者根据所加载的数据进行重建)。

总之,每天8次看起来过多。

参考文献:
http://technet.microsoft.com/en-us/library/ms189858.aspx
http://www.sqlmusings.com/2009/03/15/a-more-effective-selective-index-rebuildreorganize-strategy/
http://realworlddba.wordpress.com/2008/01/27/indexes-to-rebuild-or-reorganize/
http://realworlddba.wordpress.com/2008/01/27/indexes-to-rebuild-or-reorganize/


捕获死锁图表,并且你有死锁的实际答案,而不是猜测。 鉴于僵局是(或至少应该是)一个相当罕见的事件(低于10秒),您可以很安全地连接探查器很长时间,并只捕获锁定/死锁图形事件。

链接地址: http://www.djcxy.com/p/95675.html

上一篇: How often should you rebuild Indexes?

下一篇: Changing a SQL Server identity primary key to be sequential from 1