证明特定指数的实用性

我正在寻找一种方法来证明最近添加的索引对生产系统产生了积极的影响。 我收集了一些dmv统计数据,以显示这些索引确实被频繁使用,但需要找到一种方法来证明它们对选择查询的影响足够积极,以抵消添加的更新/删除时间可能带来的任何负面影响。

IndexUsage

我正在寻求关于如何证明这些指标对其产生积极影响的任何见解/建议。

你需要对整个工作负载进行基准测试,并在之前和之后进行测量。仅凭上述数字,我无法理解它们的含义。有124,000次更新,但是它们是否比以前花费了10倍的时间?它们是否阻塞了用户?是否因为速度更快,人们可以做更多事情,所以活动增加了,还是仅仅是查询数量自然增加了? - Aaron Bertrand
@AaronBertrand 所以你的意思是,禁用索引,在一个较长的时间内(比如一周)对查询进行基准测试。然后重新启用索引,再次进行基准测试并进行比较。有没有可能给我一个更短期的答案?(时间有限)更新:哦,还有,非常感谢你迄今为止的回答 :) - Reaces
1备份数据。在开发服务器上恢复数据。使用索引和不使用索引重现跟踪,进行比较(注意硬件/网络等因素可能导致绝对结果有所不同,但相对结果应该差不多)。如果您还没有进行过跟踪,那就需要花时间来做这个。我想不出任何"快速"的方法来证明对实际工作负载的影响。 - Aaron Bertrand
@AaronBertrand 好的,我会提出一个请求,要求给予更多时间来提供证据。如果你想把你的评论放在答案中,我可以批准它,这样问题就不会显示为未回答的了? - Reaces
1个回答

你需要先基准整个工作负载,并进行前后对比测量。光看上面的数字,我完全不知道它们究竟代表什么。我会有以下问题: - 这124,000次更新操作是否比以前慢10倍? - 它们是否会阻塞用户? - 是因为速度更快,所以人们可以做更多的事情,还是仅仅是查询数量自然增加了? 首先,备份数据。在开发服务器上恢复数据。使用索引和不使用索引时重新播放追踪文件,并进行比较(需要注意硬件/网络等的绝对结果可能会有所不同,并且无法真正获得并发性的影响,但相对差异应该是有帮助的)。您可以比较以下一些内容: - 完整工作负载的运行时间 - 在整个工作负载期间的性能监视器信息(例如,速度更快了,但CPU占用率是否过高?速度变慢了,但CPU使用率是否也增加了?) - 在每次运行之前和之后记录的sys.dm_os_wait_stats的快照 - 在每次运行之前和之后记录的sys.dm_exec_query_stats/sys.dm_exec_procedure_stats的快照 确保您先运行工作负载几次以预热缓存(因为您的生产系统很少在冷缓存上运行)。 如果您还没有对相当代表性的工作负载进行跟踪,那么这就是您需要花时间做的事情。我想不出任何“快速”方法来证明这些索引对您的实际工作负载的影响。