ITPub博客

首页 > Linux操作系统 > Linux操作系统 > (续)--XML执行计划

(续)--XML执行计划

原创 Linux操作系统 作者:bigholy 时间:2009-06-03 00:10:33 0 删除 编辑

 

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”事件)。

      不过你也可以设置一些其他的事件,如:


这些事件提供了有助于分析
XML计划的补充信息。

      在设置了Showplan XML事件后,在“Event Extraction Settings”选项上,可以选择将XML计划以文件的格式保存,以便日后进行分析。


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


由于选取了显示
Showplan XML事件,在TextData列下,可以看到实际的XML计划代码。

      另外,也可以将showplan XML事件另存为一个文件,只需在此事件中右击,然后选择“Extract Event Data”,如下所示:


接着会弹出对话框提示来设置保存的文件名路径和格式(
.sqlplan),双击保存的文件,即可在SSMS管理窗口中以图形的方式查看。

 

小结:

         在本章介绍了查询优化器和存储引擎的工作机制,这些操作均以估计执行计划和实际执行计划表示,接着介绍了一些如何查看这些计划的方法(文本、图形或XML),最后介绍了使用Profiler自动捕获的方法。

1.JPG

2.JPG

3.JPG

4.JPG

5.JPG

6.JPG

7.JPG

8.JPG

9.JPG

11.JPG

12.JPG

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/355374/viewspace-604946/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-11-08

  • 博文量
    43
  • 访问量
    93949