首页 > Linux操作系统 > Linux操作系统 > (续)--XML执行计划
SQL Server 2005提供了一种显示执行计划的新的格式-XML计划,其丰富的功能是先前版本并未提供。
1.1.1.1.1 实际与估计XML计划要开启估计XML执行计划,使用以下命令:
SET SHOWPLAN_XML ON
SET SHOWPLAN_XML OFF
与SHOWPLAN_ALL一样,SHOWPLAN_XML命令基本上也不执行T-SQL语句,而是以XML的格式收集T-SQL语句的执行计划信息,重要一点的是在结束收集信息后,记得使用SHOWPLAN_XML OFF关闭。
解释XML计划
下面通过一个简单的例子来说明:
SET SHOWPLAN_XML ON
GO
SELECT * FROM dbo.DatabaseLog;
Go
SET SHOWPLAN_XML OFF
GO
此链接指向位于以下路径的XML文件:
点击链接将在新的浏览窗口中以XML格式查看执行计划,可以通过文本、网格或文件的形式查看,默认使用的是网格。
首先列出的是BatchSequence,Batch和Statements元素,在本例子中,我们仅介绍单一Batch和单一Statement,接着是查看StmtSimple元素,它包含了语句的属性列表和QueryPlan的一些物理属性:


从上面的输出信息可以看出,此信息要比SHOWPLAN_ALL提供的信息要多。注意到优化器选择了一个trivial执行计划,根据CachedPlanSize提供的信息可知。
紧接着是RelOp元素,提供了物理操作的信息,本例是表扫描:

对于像Defined List这些列比较难读,如OutputList元素的ColumnReference节,每一个均有相应的描述列的属性:
回来先前的计划,在RelOp元素后有以下的“表扫描”元素:
保存XML计划
可以将此执行计划“另存为”以sqlplan为扩展名的格式文件,当以这种格式保存时,实际得到的是其图形执行计划。
1.1.1.1.2 使用Profiler捕获计划在进行数据库开发过程中,可以使用先前介绍的技术捕获T-SQL语句的执行计划,然而对于在测试或生产系统进行故障诊断时,显然是不够的,对于生产系统而言,可能有上千个会话执行数百个查询,在此情况下,我们需要采取一种自动捕获的机制,以便可以收集这些计划信息。
SQL Server 2005为我们提供了这样一种工具:Profiler,通过它可以捕获XML执行计划,通过收集这些计划,查看开销比较大的查询或查看某一个计划,例如:想排除的“表扫描”操作。Profiler可以捕获像T-SQL语句、存储过程等事件的数据。
执行计划事件:
Showplan Text:此事件在每一个查询执行时产生与SHOWPLAN_TEXT相同类型的估计计划
Showplan All:此事件在每一个查询执行时产生与SHOWPLAN_ALL相同类型的估计划。
Showplan All for Query Compile:此事件包含showplan 所有事件,仅在查询编译完成后时发生
Showplan Statistics Profile:此事件产生与STATISTICS PROFILE命令相同的实际执行计划。
Showplan XML:当查询执行并生成估计执行计划是触发
Showplan XML for Query Compile:当查询编译完成时触发
Performance Statistics:与Showplan XML For Query compile事件相似,此事件捕获与计划有关的性能统计信息。
要捕获执行计划的所有信息,可以使用Showplan XML或Showplan XML Statistics Profile。
捕获Showplan XML Trace
SQL Server 2005 Profiler Showplan XML事件捕获查询优化器使用的XML执行计划来执行查询,要捕获一个基本的Profiler跟踪,显示估计的执行计划,启动Profiler,建立一个新的跟踪,连接到要跟踪的服务器。
切换至“Event Selection”选项,点击“Show All events”复选框,在Performance部分找到“Showplan XML”事件(点击“+”号展开,然后点击“Showplan XML”事件)。
不过你也可以设置一些其他的事件,如:
在设置了Showplan XML事件后,在“Event Extraction Settings”选项上,可以选择将XML计划以文件的格式保存,以便日后进行分析。

设置完以上步骤后,点击“Run”运行来启动跟踪,当捕获到以上事件时,在跟踪窗口将会看到如下图一样的事件:

由于选取了显示Showplan XML事件,在TextData列下,可以看到实际的XML计划代码。
另外,也可以将showplan XML事件另存为一个文件,只需在此事件中右击,然后选择“Extract Event Data”,如下所示:

接着会弹出对话框提示来设置保存的文件名路径和格式(.sqlplan),双击保存的文件,即可在SSMS管理窗口中以图形的方式查看。
小结:
在本章介绍了查询优化器和存储引擎的工作机制,这些操作均以估计执行计划和实际执行计划表示,接着介绍了一些如何查看这些计划的方法(文本、图形或XML),最后介绍了使用Profiler自动捕获的方法。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/355374/viewspace-604946/ ,如需转载,请注明出处,否则将追究法律责任。