【发布时间】:2011-09-19 20:23:20
【问题描述】:
有没有办法只显示大于批次 1% 的项目?
我试图在 proc 中找到瓶颈,它包含循环和其他逻辑以及 99% 的结果执行计划我不关心,但很难在 Management Studio 中滚动并实际找到慢的部分下来。
【问题讨论】:
标签: sql-server sql-execution-plan
有没有办法只显示大于批次 1% 的项目?
我试图在 proc 中找到瓶颈,它包含循环和其他逻辑以及 99% 的结果执行计划我不关心,但很难在 Management Studio 中滚动并实际找到慢的部分下来。
【问题讨论】:
标签: sql-server sql-execution-plan
您看过 SQL Sentry Plan Explorer 吗?这是一个 100% 免费的工具,可以与 Management Studio 集成,并在分析计划时提供更清晰的信息。一个非常简单的示例展示了如何快速关注任何图形计划中最昂贵的节点:
下载:
https://sentryone.com/plan-explorer
有一个演示工具包可以帮助其他人说明使用 Plan Explorer 可以使执行计划变得多么容易:
https://blogs.sentryone.com/aaronbertrand/plan-explorer-3-0-demo-kit/
根据您的实际问题,它不会从计划中隐藏任何低成本或零成本操作,但会以红色、橙色和黄色突出显示最昂贵的节点;我们还突出显示了查找和扫描,您还可以按 CPU+I/O、单独的 CPU 或单独的 I/O(在 SSMS 中只能使用组合)显示成本。您正在寻找的许多性能问题都在前面和中心或在详细选项卡之一上,而不是隐藏在“属性”面板、古怪的工具提示中或根本不显示。除了图形计划的增强之外,您还可以通过在“语句树”节点中进行排序来关注循环中发生的特定语句(具有许多相关但成本较低的语句)。估计行与实际行(对于实际计划)的差异可以突出潜在的统计问题;键查找所需的列可以快速识别缺失的索引列(或不应该的 SELECT * 查询);运行时与编译参数可以指出参数嗅探问题,您可能希望使用 RECOMPILE、OPTIMIZE FOR 或打开“针对临时工作负载进行优化”。最后,与 Management Studio 不同的是,您可以通过在工具中生成实际计划来非常轻松地生成运行时指标(持续时间、CPU、读取次数等)——使用本机工具,您需要弄乱 SET 选项或使用分析器来获取这些指标- 即使对于那些你必须打折的工作,将结果发送给客户端(Plan Explorer 在服务器上运行查询但丢弃结果)。
【讨论】:
我今天刚刚下载了SSMS Tools Pack Addin 的最新版本,并注意到它现在有一些新功能也可以在这方面提供帮助。
基本上,您可以配置百分比和指标(例如,总体估计成本或估计 IO 成本),超过此阈值的运营商按成本顺序列在计划左侧,并且可以单击以导航到特定运营商.
查看Execution Plan Analyser 屏幕截图以获得更好的想法。
【讨论】: