我在使用 Database Tuning Advisor 时做错了什么?

Jax*_*ian 3 sql-server sql-server-2008-r2 index-tuning

我的背景:我是一名开发人员/架构师,而不是 DBA。对不起!

所以我们有一个 ~400 表 75GB 的数据库。我运行 Profiler 大约 24 小时(“调优”模板减去LoginName),并在跟踪文件中记录了大约 7GB 的使用量。然后,我针对我们的生产数据库(下班后)在此跟踪文件(无分区,保留聚集索引,PDS 推荐:索引)上运行数据库引擎优化顾问。我给了它大约 4 个小时的时间来分析。这是我得到的总结结果:

DTA 汇总结果

对我来说,看起来“错误”的事情是:

  1. 它只调整了 ~530k 查询中的 ~9k
  2. 它建议我删除大量索引(实际上,其中大部分)
  3. 它建议我创建 0 个索引

这听起来对吗?我预计它会删除我的大部分索引,但随后会创建大量新索引。另外,如果分析 9k 查询需要 4 个小时,那么我是否可以考虑正常一天的使用价值?与大多数大型数据库相比,我们的数据库消耗相当轻(总共约 50 个用户)。

我想我要么误解了什么,要么只是做错了什么。

JMa*_*arx 5

我不会打扰 DTA。对于充其量是粗略的结果,需要做大量的工作。进入索引调优的每个人最终都意识到它既是一门科学又是一门艺术,而且还有很多内容。您可以使用工具来获取建议,但盲目地实施这些建议几乎总是会导致问题。

相反,我会尝试一下BlitzIndex。它将利用 SQL Server 已经维护的统计信息来确定您可以在哪里改进索引(并在几秒钟内完成)。它还提供了关于如何使用结果的非常易于访问的文档。每个结果都包含指向相关文档的链接。这就是我这些天维护索引的方式。

  • 这正是您在索引调整时应该做的!您只需要找到合适的工具,并提供您可以使用的建议。DTA 很少是那种工具。 (2认同)