在Server Management Studio中显示查询计划


9

另一个SQL Server问题:自计数器重置以来,我有一个简单的查询,该查询为我提供了最多CPU密集型SQL:

select top 10  
    sum(qs.total_worker_time) as total_cpu_time,  
    sum(qs.execution_count) as total_execution_count, 

    qs.plan_handle, st.text  
from  
    sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text 
order by sum(qs.total_worker_time) desc

问题1:究竟是什么plan_handle?它似乎不是计划的哈希,就像在Oracle中一样。我问是因为我希望能够发现陈述计划发生变化的情况。

问题2:一旦有了plan_handle,我会对实际计划感兴趣。因此,例如:

select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)

在query_plan列中,我获得了一个链接,单击该链接可显示XML文档。如果将它保存为磁盘上的what.sqlplan,则可以在Windows中双击它,并在Management Studio中正确显示。肯定有某种方法可以避免此步骤吗?

问题3:有没有办法像过去的SET SHOWPLAN_TEXT一样将XML转换回文本格式?我希望能够以图形方式查看它们,还希望以某种有意义的方式自动对它们进行比较。

谢谢!

Answers:


7

我在Wrox Press的《 SQL Server 2008内部和故障排除》一书中找到了以下技巧:

如果使用连接到SQL 2005 Server的SQL 2008 SSMS,则单击XML查询计划时,它将自动为您加载图形查询计划。

我使用同一本书中的以下查询验证了它的工作原理:

select session_id, text, query_plan
from sys.dm_exec_requests
cross apply sys.dm_exec_sql_text(sql_handle)
cross apply sys.dm_exec_query_plan(plan_handle)

另外,如果您还没有看过它,请查看SQL Sentry的免费Plan Explorer。您必须首先将XML作为.sqlplan保存到磁盘,但是它提供了SQL执行计划的易于使用的视图。希望有一天某人会提出视觉执行计划差异工具。:D


9

解答1:plan_handle是一组语句或批处理的哈希。

解答2:否,dm_exec_query_plan以XML格式返回查询计划,因此您需要单击该命令才能查看该图。

A3。尝试这个:

SELECT query_plan 
FROM sys.dm_exec_text_query_plan (0x06000100A27E7C1FA821B10600,0,-1);

1
我回来了,<ShowPlanXML xmlns="http://schemas.microsoft.com...但是仍然无法直接显示它-我需要.sqlplan先将其作为文件保存到磁盘。奇怪的。谢谢tho':)
Gaius
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.