sql-server - SQL Server执行计划: filter to show bottlenecks?

标签 sql-server sql-execution-plan

有没有办法只显示批处理中大于 1% 的项目?

我正在尝试查找过程中的瓶颈,它包含循环和其他逻辑以及我不关心的 99% 的结果执行计划,但很难在 Management Studio 中滚动并实际找到速度缓慢的部分下来。

最佳答案

您查看过 SQL Sentry Plan Explorer 吗?这是一个 100% 免费的工具,可以与 Management Studio 集成,并在分析计划时提供更多的清晰度。一个非常简单的示例展示了如何快速关注任何图形计划中最昂贵的节点:

enter image description here

下载:

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、读取等) - 使用 native 工具,您需要弄乱 SET 选项或使用探查器来获取这些指标- 即使有了这些,您也必须忽略将结果发送给客户端所涉及的工作(Plan Explorer 在服务器上运行查询,但丢弃结果)。

关于sql-server - SQL Server执行计划: filter to show bottlenecks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476867/

相关文章:

c# - 为什么 Entity Framework 将名为 "People"的表映射为我的 .edmx 文件中名为 "Person"的实体

sql - 如何在sql中将字符串拆分为变量?

sql - 年月不同等候名单上的客户数量

sql - PostgreSQL 查询未使用索引

sql - 手动将 varbinary 数据插入 SQL Server

sql-server - SQL Server DATEDIFF 小时四舍五入

postgresql - postgres如何决定是使用index scan还是seq scan?

sql - LIKE '%...'如何寻找索引?

sql - 存储过程执行计划 - 数据操作

mongodb - 在 MongoDB 查询优化器中选择完美索引的冲突