欢迎投稿

今日深度:

SQL Server性能调优之执行计划第一次实践(1)(2)

执行计划信息解读

刚刚大家已经看了图形化的执行计划了,相关大家比较关心的问题有两个:如何解读执行计划中提供的各种信息;如何采用执行计划来进行性能调优。

我们首先来看看第一个问题。

一般而言,我们在阅读图形化的执行计划的时候顺序是这样的:从右向左,从下往上。也就说:sql执行的第一步就显示在执行计划的右下角。

在图形化执行计划中的每一个图标,都表示一个操作,在之前的执行计划中就有两个操作。并且每个操作之前采用箭头连接起来,表明了数据流动的方向,其中箭头的粗细就反应了数据量的大小。

另外,在每个操作下面都显示了一个百分比。

对于估计执行计划而言,这个数字就是优化器对执行计划中每一个操作步骤进行成本分析后的结果。例外,在我们的例子中,整个查询最后会有两个操作会进行,Select和Table Scan,其中整个查询的成本将会落在Table Scan(整表扫描)上。

操作提示信息

当我们把鼠标放在每个操作或箭头上面的时候,就会弹出更多的相关信息,我们下面就来具体的看一看。

例如,当我们把鼠标放在执行计划的Select操作上面,显示如图:

上面图中给出的信息非常清楚了,我这里只是解释一下“估计子树大小”。因为执行计划可以看出是sql语句的逻辑执行步骤,这个选项就告诉我们:在我们现在所看的这个操作步骤以及后面的所有步骤的开销是多少,是一个总计数字。

如何朋友们还有有什么不清楚的,我们在后续将要展开的在线讲座中讲述!

下面我们看看Table Scan的提示信息,如下图所示:

虽然这个操作中包含的信息就非常的多了,但是却都很容易理解。

这里要稍微重点提一下就是“已排序”。很明显,这个值告诉我们:Table Scan这个操作是建立在对数据排序的基础上的。例如,在查询语句中,有时候,我们写上order by语句,那么后续的很多的操作都是在已经排序的数据基础上进行,通过查看“已排序”是true还是false,我们就可以知道,查询语句内部是否自己进行了额外的排序操作(有时候,我们明明没有写order by,但是优化器却认为进行order by之后成本更小,这个时候我们就要注意了)。

最后稍微的提一下“节点ID”,这个值就反应了操作在整个执行计划中的执行顺序,数字越小,说明越早被执行。在上图中,表明table scan操作时整个执行计划的第一步。

为了使得大家更加的清楚,下面我们把之前的查询语句稍微的改下:

  1. SELECT * FROM [dbo].[DatabaseLog] order by  PostTime 

估计执行计划如下:

我们查看提示信息,发现排序最先进行,然后再整表扫描。

今天就暂时到这里,下一篇,我们讲述相关的操作以及以文本和xml的形式查看执行计划。


www.htsjk.Com true http://www.htsjk.com/shujukugl/17748.html NewsArticle 执行计划信息解读 刚刚大家已经看了图形化的执行计划了,相关大家比较关心的问题有两个:如何解读执行计划中提供的各种信息;如何采用执行计划来进行...
评论暂时关闭