执行计划 编译时间等

缓存执行计划

SQL Server 2008提供了一些服务器对象来分析执行计划

Sys.dm_exec_cached_plans:   
包含缓存的执行计划,每个执行计划对应一行。
Sys.dm_exec_plan_attributes:
这是一个系统函数,每一个执行计划都对应着一些属性,在这个系统函数中包含着这些属性。

Sys.dm_exec_sql_text:            
这是一个系统函数,返回文字格式的执行计划。

Sys.dm_exec_query_plan:       
这是一个系统函数,返回xml格式的执行计划。
SQL Server
2008还提供了一个兼容性的视图sys.syscacheobject,这个视图中保存了所有的执行计划的信息。

清除缓存

在进行性能分析的时候有时候需要清除缓存以便进行下一次分析。SQL Server提供了一些工具来清除缓存的性能数据。使用下面的语句来完成这些任务。

清除全局缓存使用下面的语句:

DBCC DROPCLEANBUFFERS;

从全局缓存中清除执行计划,使用下面的语句:

DBCC FREEPROCCACHE;

清除某一个数据库中的执行计划,使用下面的语句:

DBCC FLUSHPROCINDB(<db_id>);

清除一个特定的执行计划使用下面的语句:

DBCC FREESYSTEMCACHE(<cachestore>);

可以使用’ALL’,pool_name,’Object Plan’,’SQL Plans’,’Bound
Trees’作为输入参数。’ALL’参数标明要清除所有的缓存,pool_name的值表明要清除的一个缓存池的名字。’Object
Plans’清除对象计划(例如存储过程,触发器,用户定义函数等等)。’SQL Plans’用来清除要立即执行的语句。’Bound
Trees’定义清除视图,约束等的缓存。

注意:在使用这些语句清除缓存之前要想清楚,特别是在生产环境。这些对性能有很大的影响。清除这些缓存之后SQL
Server需要从数据页中重新读取数据。并且SQL Server需要重新生成新的执行计划。因此在清除之前要想清楚这些对生产或者测试环境的影响。

统计运行时间

STATISTICS TIME是一个用来返回CPU时钟时间的session选项。它返回语法分析,编译,执行的时间。要使用这个选项首选要清除执行计划缓存。

DBCC DROPCLEANBUFFERS;

DBCC FREEPROCCACHE;

运行下面的语句来打开相应的选项:

SET STATISTICS TIME ON;

运行下面的语句:
SELECT orderid, custid, empid, shipperid, orderdate, filler
FROM dbo.Orders WHERE orderdate >= ‘20060101‘ AND orderdate <
‘20060201‘;

得到下面的信息:

SQL Server parse and compile time:  
//这里是编译时间

   CPU time = 0 ms, elapsed time = 4
ms.

SQL Server Execution Times:

CPU time = 46 ms,  elapsed time = 544 ms.

从这些信息中可以获得执行这个语句时候的CPU时钟时间,编译时间,运行时间。运行下面的语句可以关闭这个选项:

SET STATISTICS TIME OFF;

当需要分析一个单独的语句的性能的时候这个选项非常有用。当需要使用批处理的模式来运行语句的时候需要度量会有所不同。在查询之前保存SYSDATETIME函数的值,并写入到一个表中。注意这个函数返回的时间格式是DATETIME2,可以精确到100纳秒。这个函数的准确性取决于计算机硬件和操作系统版本。因为这个函数会调用GetSystemTimeAsFileTime()这个WindowsAPI。需要统计时间的时候可以重复地运行请求语句,然后记录下需要的时间。

时间: 2024-11-10 16:15:40

执行计划 编译时间等的相关文章

SQLServer中的执行计划缓存由于长时间缓存对性能造成的干扰

本文出处:http://www.cnblogs.com/wy123/p/7190785.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 先抛出一个性能问题,前几天遇到一个生产环境性能极其低下的存储过程,开发人员根据具体的业务逻辑和返回的数据量,猜测到这个存储过程的执行应该不会有这么慢.当时意识到可能是执行计划缓存的问题,因为当前这个存储过程的写法还是比较遵守参数化SQL的规范的(如果是动态即席查询SQL就不

SQL Sever 2008性能分析之执行计划

一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试 2的工作.我深信实践中得到的经验是最珍贵的,书本知识只是一个引导.本篇来源于<Inside Microsoft SQL Server 2008>,有经验的高手尽管拍砖把. 这个部分将讲解一些性能分析工具,这些性能分许主要关注在执行计划. 缓存执行计划  SQL Server 2008提供了一些服务器对象来分析执行计划Sys.dm_exec_cached_plans:    包含缓存的执行计划,每个执行计划对应一行.Sy

SQL 执行计划(一)

缓存执行计划  SQL Server 2008提供了一些服务器对象来分析执行计划Sys.dm_exec_cached_plans:    包含缓存的执行计划,每个执行计划对应一行.Sys.dm_exec_plan_attributes: 这是一个系统函数,每一个执行计划都对应着一些属性,在这个系统函数中包含着这些属性.Sys.dm_exec_sql_text:             这是一个系统函数,返回文字格式的执行计划.Sys.dm_exec_query_plan:        这是一个

执行计划缓存

执行计划编译是需要时间的,为了提高效用率,是要缓存的,可用如下方式查看:–查看执行计划的缓存 SELECT UseCounts,RefCounts, Cacheobjtype, Objtype,dbid, ISNULL(DB_NAME(dbid),'ResourceDB') AS DatabaseName, TEXT AS SQL FROM sys.dm_exec_cached_plans CROSS APPLY sys.dm_exec_sql_text(plan_handle) ORDER B

SQL性能分析之执行计划

一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试的工作.我深信实践中得到的经验是最珍贵的,书本知识只是一个引导.本篇来源于<Inside Microsoft SQL Server 2008>,有经验的高手尽管拍砖把. 这个部分将讲解一些性能分析工具,这些性能分许主要关注在执行计划. 缓存执行计划  SQL Server 2008提供了一些服务器对象来分析执行计划Sys.dm_exec_cached_plans:    包含缓存的执行计划,每个执行计划对应一行.Sys.

SQL点滴27—性能分析之执行计划

原文:SQL点滴27-性能分析之执行计划 一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试的工作.我深信实践中得到的经验是最珍贵的,书本知识只是一个引导.本篇来源于<Inside Microsoft SQL Server 2008>,有经验的高手尽管拍砖把. 这个部分将讲解一些性能分析工具,这些性能分许主要关注在执行计划. 缓存执行计划  SQL Server 2008提供了一些服务器对象来分析执行计划Sys.dm_exec_cached_plans:    包含缓存

执行计划--参数化设置

执行计划与参数化设置 当TSQL 语句发送到SQL Server引擎时,SQL 引擎需要对先其进行语法分析检查,然后生成执行计划,再按照执行计划运行并按照指定格式封装结果集返回,TSQL 的运行时间包括生成执行计划的时间和与运行执行计划的时间,SQL Server引擎依据各种索引+约束+统计等数据库对象尝试找出一条够好(执行成本够低的)执行计划. 对应复杂的TSQL语句,涉及到众多的表和索引,需要评估多种执行方案,消耗大量CPU资源,并且增加整个语句的执行时间,因此SQL SERVER 使用计划

执行计划组件、组件、老化

一.执行计划缓冲 优化器生成的执行计划保存在SQL Server内存池中的一个特别部分,被称为计划缓冲或过程缓冲.过程缓冲是SQL Server缓存的一部分.在缓冲中保存计划可使SQL Server避免在重新提交相同的查询时再次通过整个查询优化过程运行.SQL Server支持不同的技术,如:计划缓冲老化,计划缓冲类型来增加缓存的计划的可重用性.它还保存两个被称为hash和查询计划hash的二进制值. 二.执行计划组件 优化器生成的执行计划包含两个组件: 查询计划:这代表指定执行查询所需要的物理

执行计划的生成

SQL Server使用许多技术来优化资源消耗: 基于语法的查询优化: 无用计划匹配以避免对简单查询的深度优化: 根据当前分布统计的索引和连接策略: 多阶段的查询优化以控制优化开销: 执行计划缓冲以避免重新生成执行计划: 以上技术按以下顺序执行: 解析器: 代数化器: 查询优化器: 执行计划生成,缓冲和hash计划生成: 查询执行: 其执行顺序如下: 一.解析器(parser) 当查询被提交时,SQL Server将它传递给关系引擎中的解析器. 关系引擎-负责解析.名称和类型解析.优化和按照查询