每周重建索引是个好主意吗?

Nul*_*nce 17 sql-server sql-server-2014

我们有一位 SQL 专家建议每周重建我们的表索引。我们目前正在这个星期六晚上进行,它会在重建过程中导致很多超时。如果可能,我想避免超时,那么进行每周索引重建是个好主意吗?

我们正在运行 MS SQL Server 2014。

更新我们在重建过程中收到此错误“System.Data.SqlClient.SqlException:超时已过期。操作完成之前超时时间已过,或者服务器没有响应。”

谢谢!

Kin*_*hah 16

不要盲目地重建所有索引。有一种非常聪明的方法来做到这一点(提示:Ola Hallengren 的 SQL Server 索引和统计维护)

这是 Microsoft 的官方指南这是一个很好的起点 - 而不是盲目地重建所有索引)

点击这里放大 在此处输入图片说明

此外,如果您使用的是 sql server 企业版,那么重建是一个在线操作(REBUILD ONLINE = ON)

另外,请阅读:在线索引重建 - 可能导致碎片增加- 当它被允许MAX DOP > 1ALLOW_PAGE_LOCKS = OFF指令一起运行时。

附带说明:Paul Randal在他的 MS 时代有一个很好的 VLDB 维护最佳实践清单:-)


使用 Ola 脚本的好处是它具有日志记录功能[日志到dbo.CommandLog表] ,随着时间的推移,它会成为一个金矿,您可以从中获得真正的价值。

例如

  • 如果您正在部署索引维护,那么您可以使用它dbo.CommandLog来找出哪些索引经常碎片化,对它们进行碎片整理所花费的时间,如果您加入,sys.indexes那么您可以绑定FILL FACTOR和调整它。检查-monitoring-for-endless-index-defragmenting
  • 此外,如果您有 DatabaseIntegrityCheck - CHECKDB 解决方案,那么您可以了解执行 CHECKDB 需要多长时间