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

自从上一篇文章发出之后,收到了很朋友的关注。很多朋友要求多多实践,而不是纯粹的理论。确实,从打算出这个系列开始,我就本着实践的思想来进行的!同时,为了使得大家更好的理解、消化这些知识,我会定期的就所写内容进行在线的视频讲座,朋友们可以去参与这个小组:http://www.agilesharp.com/c/sqlprofiler.aspx,报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-2

议程如下:

  • 实践概述
  • 图形化执行计划实战
  • 执行计划信息解读

实践概述

执行计划可以辅助我们写出高效率的T-SQL代码,同时也可以找出现有T-SQL代码的问题,还可以监控数据库!当然,***如何使用执行计划还是取决于我们自己了,但是不管怎么样,我们首先学会解析执行计划中所包含的信息,最快的学习方法就是实践。下面,我们就从一个实践开始。

为了使得大家易于理解,这里的例子不会太复杂,随着课程的不断深入,后续的示例也会越来越复杂。同时,如果大家也想跟着一起动手实践,那么希望朋友们安装SQL2005或更高版本,同时记得安装AdventureWorks数据库。下载地址为:http://msftdbprodsamples.codeplex.com

另外,有一个需要注意的是,由于数据库中数据,操作和时间的关系,可能大家在运行脚本产生的执行计划和我这里不完全一样,这是没有任何问题的!

图形化执行计划实战

下面我们正式进入要讨论的话题。

首先,为了使得我们可以查看执行计划,最起码要确保我们在登录数据库的时候,要被授予权限,如下语句所示:

  1. GRANT SHOWPLAN TO [username] 

为了将讨论集中在执行计划(估计执行计划和实际执行计划)上,我们这里这是运行一个比较简单的查询,如下代码所示:

  1. SELECT * FROM [dbo].[DatabaseLog]; 

下面,我们就来看看这个语句的估计执行计划,正如之前文章讲述的:估计执行计划是优化器使用了的元数据,成本分析算法等而产生的计划,这个计划是查询语句执前的一个分析!

显示估计执行计划

我们可以采用以下几种方式显示估计执行计划:

  1.  点击Sql Server Studio工具栏上的按钮:
  2.  在查询窗口右击鼠标,如下所示:
  3.  使用快捷键“CTRL + L”.

对以上面的查询语句,显示的图形化的估计查询计划如下:

显示执行查询计划

与估计执行计划不同,实际的执行计划不是优化器产生的,实际的执行计划是底层的存储引擎在执行时候产生的,这个计划中包含了大量的实际的底层数据和相关的信息。

我们可以采用以下方式获得实际的执行计划,如下所示:

  1.  点击工具栏上面的按钮:
  2.  在查询窗口右击鼠标,如下:
  3.  快捷键“CTRL + M”

上述查询的实际执行计划如下所示:

大家初一看,以为两者没有区别,但是它们包含的数据信息很多是不一样的。

下面,我们就开始对图形化的执行计划进行解读。

#p#

执行计划信息解读

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

我们首先来看看***个问题。

一般而言,我们在阅读图形化的执行计划的时候顺序是这样的:从右向左,从下往上。也就说: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的形式查看执行计划。

原文链接:http://www.cnblogs.com/yanyangtian/archive/2011/09/05/2167093.html

【编辑推荐】

  1. 养成一个SQL好习惯带来一笔大财富
  2. 告诉你,如何成就DBA职业生涯
  3. SQL Server性能调优之浅析SQL执行的过程
  4. 客户的一次疏忽,DBA的一次噩梦
  5. 数据库点滴之精妙SQL语句

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/252983.html<

(0)
运维的头像运维
上一篇2025-04-29 16:51
下一篇 2025-04-29 16:52

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注