性能调优:理解Set Statistics IO输出我们讨论了Set Statistics IO,还有如何帮助我们进行性能调优。这篇文章会讨论下Set Statistics Time,它会告诉我们执行一个查询需要的时间。

我们用一个例子来开始。

 USE AdventureWorks2008r2
GO
DBCC dropcleanbuffers
DBCC freeproccache GO
SET STATISTICS TIME ON
GO
SELECT *
FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD ON
SOH.SalesOrderID=SOD.SalesOrderID
WHERE ProductID BETWEEN 700
AND 800
GO
SELECT *
FROM Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail SOD ON
SOH.SalesOrderID=SOD.SalesOrderID
WHERE ProductID BETWEEN 700
AND 800

在例子里有2个SELECT语句。第1个在清空缓存后执行。我们来看看输出。

SQL Server 分析和编译时间:

当我们提交了一个查询给SQL Server去执行时,它需要为任何语法错误进行分析并编译,然后优化器生成最优计划去执行。SQL Server分析和编译时间指的是完成进行这些预执行步骤所花的时间。我们来看第2个执行的输出,在SQL Server分析和编译时间环节,CPU时间是0毫秒,占用时间是21毫秒。这表示SQL Server没有花任何时间在分析和编译上,因为执行计划已经在缓存里。CPU时间值的花在CPU上的时间,占用时间指的是完成分析和编译所占用的总时间。CPU时间和占用时间两者之间的区别可能是在CPU周期队列里的等待,或者在等待IO操作完成。这些时间在性能调优里并不重要,因为每次执行都会不一样。如果你在这个环节看到的时间基本是一致的,很可能你在使用重编译选项运行存储过程。

SQL Server 执行时间:

这个指的是SQL Server完成执行编译好计划的时间。CPU时间指的是花在CPU上的实际时间,占用时间指的是包括信号等待时间(signal wait time)在内的完成执行的总时间,等待时间是完成IO操作和输出结果传送给客户端的时间。CPU时间可以作为性能调优的基线。这个值多次执行后不会有太大改变,除非你修改查询或数据有变动。在服务器上的负载不会影响这个值。请注意这里显示的时间单位都是毫秒。对于同个数据的同个查询CPU时间值在反复执行后可能会不同,但也是1/100秒内。占用时间就取决于很多因素了,例如服务器工作量,IO加载,服务器与客户端之间的网络带宽。因此在性能调优时,我们可以把CPU时间作为基线。

参考文章:

http://www.sqlservercentral.com/blogs/practicalsqldba/2013/07/17/sql-server-performance-tuning-understanding-set-statistics-time-output/

性能调优:理解Set Statistics Time输出的更多相关文章

  1. 性能调优:理解Set Statistics IO输出

    性能调优是DBA的重要工作之一.很多人会带着各种性能上的问题来问我们.我们需要通过SQL Server知识来处理这些问题.经常被问到的一个问题是:早上这个存储过程运行时间还是可以的,但到了晚上就很慢很 ...

  2. JVM | 第1部分:自动内存管理与性能调优《深入理解 Java 虚拟机》

    目录 前言 1. 自动内存管理 1.1 JVM运行时数据区 1.2 Java 内存结构 1.3 HotSpot 虚拟机创建对象 1.4 HotSpot 虚拟机的对象内存布局 1.5 访问对象 2. 垃 ...

  3. mysql监控、性能调优及三范式理解

    原文:mysql监控.性能调优及三范式理解 1监控 工具:sp on mysql     sp系列可监控各种数据库 2调优 2.1 DB层操作与调优 2.1.1.开启慢查询 在My.cnf文件中添加如 ...

  4. 在SQL Server 2016里使用查询存储进行性能调优

    作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在 ...

  5. SQL Server调优系列基础篇 - 性能调优介绍

    前言 关于SQL Server调优系列是一个庞大的内容体系,非一言两语能够分析清楚,本篇先就在SQL 调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优. 通过 ...

  6. JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...

  7. SQL Server 调优系列基础篇 - 性能调优介绍

    前言 关于SQL Server调优系列是一个庞大的内容体系,非一言两语能够分析清楚,本篇先就在SQL 调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优. 通过 ...

  8. JVM常用命令和性能调优建议 [Could not create the Java virtual machine]

    一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. ...

  9. JVM常用命令和性能调优建议

      一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程 ...

随机推荐

  1. ES5 数组方法every和some

    Array.prototype.every() 概述 every() 方法测试数组的所有元素是否都通过了指定函数的测试. 语法 arr.every(callback[, thisArg]) 参数 ca ...

  2. 兼容iOS 10 资料整理

    1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...

  3. Android音频介绍

    这个世界音频设备千变万化,Android也不可能为每种设备都提供支持.Android定义了一个框架,这个框架来适配底层的音频设备.该适配层的定义位于: hardware/libhardware_leg ...

  4. 单点登录 SSO(Single Sign-On)的实现原理

    为什么要 SSO? 企业的信息化过程是一个循序渐进的过程,这就造成在企业的不同时期,根据业务和发展需要,构建了多个应用程序,而这些应用程序在功能.设计和技术可能都有所不同,就形成了各自独立的用户库和用 ...

  5. 用C++为nodejs 写组件,提高node处理效率

    昨天研究了下如何用C++和node交互,在node的程序中,如果有大数据量的计算,处理起来比较慢,可以用C++来处理,然后通过回调(callback的形式),返回给node. 首先,先来看看node ...

  6. JSP中文乱码解决方案

    学习JSP的过程中总会碰到中文乱码问题,有的是post方式提交没问题,用get方式提交有乱码,还有的是部署到tomcat中没问题,在Eclipse中启动tomcat,发现用get方式提交有乱码.产生乱 ...

  7. Two classes have the same XML type name 排错【转】

    今天遇到一个问题,webservice发布的时候报下面的错误: <strong>Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotati ...

  8. IPFS搭建分布式文件系统 - 访问控制

    IPFS 一个内容可寻址.对等的超媒体分发协议. IPFS网络中的节点形成分布式文件系统. 为什么要用IPFS? “IPFS and the Blockchain are a perfect matc ...

  9. C代码中如何调用C++ C++中如何调用C

    注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. 集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译 ...

  10. dissmiss a UISearchBar with an SearchBarController

    If you want do dissmiss a UISearchBar with an SearchBarController, just use this Code: [self.searchD ...