【发布时间】:2016-12-21 15:03:02
【问题描述】:
我正在审核和清理一些 SQL 2008 R2 Box。
我正在做很多工作:
sys.dm_db_index_usage_stats (Index usage)
sys.dm_exec_procedure_stats (Procedure usage)
这些 DMV 提供了很多良好的性能信息。
我需要一种将结果链接在一起的方法。即如何确定哪些存储过程正在使用哪些索引?
我一直在分解计划缓存中的 XML,但是效率很低,有没有人有更好的解决方案?
【问题讨论】:
-
这是我在删除存储过程之前使用特定索引查找存储过程的方法。 sqlskills.com/blogs/jonathan/…
-
嗨,我已经看过这个了。我的问题是我在较小的盒子上有超过 80,000 个索引,所以我必须为每个索引切碎每个计划缓存。我试图想出一些更高效的东西,我可以每天运行,使我能够将结果保存到永久表并监控更改。我已经将每个计划分解一次并获得了它使用的索引列表,但我希望有一些鲜为人知的 dmv 或 XML 技巧来产生最小的开销。
-
80,000 个索引?用 Buddy the Elf 的话来说,这令人震惊。
-
为什么需要哪些程序使用特定索引的信息?要知道哪个语句使用索引是不够的(使用语句是获取哪些过程使用这些语句的信息的捷径)?
-
Deadsheep39:我继承了一个庞大的内部解决方案,该解决方案被大量且不恰当地编入索引。我需要弄清楚哪些存储过程产生的开销最大,即索引扫描和更新,然后将其反馈给相应的开发团队。 (我需要确定系统的问题部分并将所有权归还给正确的团队。)
标签: sql-server tsql