证明特定索引的有用性

Rea*_*ces 4 performance index sql-server

我正在寻找一种方法来证明最近添加的一些索引对生产系统产生了积极影响。

我收集了一些 dmv 统计数据来表明索引确实被使用(经常),但需要一些方法来证明它们对选择查询有足够积极的影响,增加更新/删除时间的任何负面影响是输出。

索引使用

我正在寻找有关如何证明这些索引具有积极影响的任何见解/建议。

Aar*_*and 5

您需要为整个工作负载设定基线并在之前/之后进行测量。仅凭上面的数字,我不知道它们的含义。我会提出的问题包括:

  • 有 124,000 次更新,但它们花费的时间是过去的 10 倍吗?
  • 他们是否阻止了用户?
  • 是否有更多的活动是因为人们可以做更多的事情,因为它更快,或者只是查询数量的自然增加?

备份一下。在开发服务器上恢复。使用和不使用索引重放跟踪,并进行比较(请注意,绝对结果可能因硬件/网络等而异,您不会获得并发的真实效果,但相对差异应该会有所帮助)。您可以比较各种内容:

  • 运行整个工作负载的时间
  • perfmon 整个工作负载的东西(例如它更快,但它是否与 CPU 挂钩?它更慢,但它是否也使用了更多的 CPU?)
  • sys.dm_os_wait_stats每次运行前后的快照
  • sys.dm_exec_query_stats/sys.dm_exec_procedure_stats每次运行前后的快照

确保首先运行工作负载几次以准备好缓存(因为您的生产系统很少会在冷缓存上运行)。

如果您还没有对相当有代表性的工作负载进行跟踪,那么这就是您需要花时间去做的事情。我想不出任何“快速”的方法来证明这些索引对您的实际工作量的影响。