SQL Server 2005 - 您应该多久重建一次索引?

Jac*_*tti 7 asp.net indexing asp.net-membership sql-server-2005

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

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

对于正确的索引重建计划,您会建议什么?

api*_*guy 11

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

这是我们使用的指南:

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

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


Chr*_*ers 6

一个好的经验法则是REBUILD,当超过30%的碎片时,重新组合在10%到30%之间.

对于少于1000页的表格,不要费心,你不会注意到,即使在运行REBUILD超过30%的表格后,它通常也会留下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 -改组/