Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1117585
  • 博文数量: 141
  • 博客积分: 3161
  • 博客等级: 中校
  • 技术积分: 3011
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-27 14:53
文章存档

2012年(28)

2011年(113)

分类: 数据库开发技术

2012-03-28 09:20:11

查询优化器内核剖析第五篇:进一步的了解执行计划

  

系列文章索引:       

      
   

 

 

 

    在上一篇中,我们稍微的谈了一些有关执行计划的知识,本篇的目的主要是补充上一篇,因为执行计划的东西很多很多,如果要讲清楚,那就得用一本书的篇幅来讲述,看以后的安排,如果有时间,可以进一步的尝试写写。

 

    在上一篇中,我们说了,可以再图形化执行计划中查看数据的流向等相关信息,同时,也可以通过把鼠标放在一些操作或者箭头上查看更多的信息。另外,我们还可以在物理操作符和箭头上,点击右键,选择“属性”,查看更多的信息,如下图所示:

 

    其实在很多的时候,图形化展示的信息是很有限的,毕竟有很多的信息不方便在图形中显示出来,所以为了查看更加具体的信息,我们可以查看执行计划的XML格式和普通文本格式(普通文本的格式以后会被微软逐近的弃用,但是如果是对SQL Server2000进行调优,那么还是只能用普通文本格式的执行计划来进行的)。

 

     如果在之前我们得到的图形化的执行计划的显示窗口,点击右键,然后选择“Show Execution Plan XML”,如下图所示:

    这个时候,就显示如下:

    我们这里不会讲述如何来解读这个XML格式的执行计划,以后可能会用一些专题来讲述,并且在本系列的后文文章中,如果用到了,会做适当的必要性的讲解。

 

    除此之外,我们还可以通过SQL语句来获取执行计划(只能用SQL语句来获取XML格式和普通文本格式的执行计划)。

    我们先用一个表格来总结一下查看执行计划的几种方式,如下:

    注意:很多的语句都是Set  Show_XXX On,有“On”就有对应的“Off“。

    下面,我们就来查看之前的SQL语句的XML格式的执行计划:

   

   

    运行之后,得到如下的结果显示:

   

    点击蓝色的链接,在SQL Server 2008中就看可以到这个XML格式的执行计划以图形化的形式展示出来。

 

    如果是在2005中,那么就会直接显示XML格式。这个时候,我们可以把这些XML格式的执行计划保存为.sqlplan为后缀的文件,那么双击就可以以图形化的形式查看了。

   

 

    如果运行下面的SQL语句:

20120323210102.png

    那么就会显示基于普通文本的格式的执行计划,如下所示:

   

    普通文本格式的不好之处就是不要阅读,但是它包含的信息是最多的。

 

    除了采用上面的的方法来查看之外,还可以利用DMV(动态管理视图)来查看和SQL Profiler或者SQL Trace来查看,我个人比较喜欢这个格式,但是DMV的学习曲线更加的陡峭,但是一旦学会,可以做很多的事情,特别是在性能优化与故障排除方面。、

 

    在这里,我介绍一下使用DMV来看。之前我们谈到的,当一个查询被优化之后,它的执行计划就会被放在了计划缓存中,也就是在内存中,所以我们可以采用sys.dm_exec_query_plan这个动态管理函数(DMF)来获取这个查询的执行计划(DMF常常和DMV结合在一起使用,以后谈到DMV,我们就指代:DMV和DMF)。

 

 

    我们运行下面的查询:

 

   

    在上面的查询中,涉及到了sys.dm_exec_requests这个动态管理视图,这个DMV就是放映了当前正在执行查询,而session_id就是当前运行的这个查询的回话id,我们可以通过查看一些系统表得到。这里就稍微的提及一下,我们会面还有更多的讲述!

 

    今天就到这里!下一篇讲述Join的一些知识,大家可以认为Join没有什么,但是“次Join非彼Join“,大家拭目以待 :)。

阅读(1604) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

十七岁的回忆2012-03-30 00:34:52

图形化展示的信息是很有限的!