对于查询调优,你需要的不止STATISTICS IO
在我查询调优期间,STATISTICS IO会话选项是我的朋友,因为对于指定的查询,它准确告诉你有多少页已读取。每次,SQL Server从缓存池骑牛一个8K的页,它通过STATISTICS IO的输出获得记录。
通常我会建议启用STATISTICS IO来更好的理解在给定的查询里,涉及的表上有多少页被读取。而且查询调优的目标是尽可能减少这些读取页数——通过索引策略。对于查询,你数据读的越少,查询就会越快。但今天的问题如下:对于查询调优,STATISTICS IO有你需要的一切么,还是又你应该知道更多的维度?
我们来谈下客户端统计信息
另一个非常重要的选项——至少从我的角度来看——是SSMS里的客户端统计信息选项:

当对你的会话启用这个选项,SSMS会告诉你你的查询客户端处理的更多信息。下图是SSMS里一个典型的输出结果:

这里SSMS向你展示你的查询最后一次执行的性能指标。最重要的指标是网络统计和时间统计。网络统计信息向你展示下列信息:
- 服务器往返的次数
- 从客户端发送的 TDS 数据包
- 从服务器接收的 TDS 数据包
- 从客户端发送的字节数
- 从服务器接收的字节数
通常我会留意从服务器接收的字节数,因为用收到的信息,你很容易看到从服务器返回的信息量。当然你的结果集越大,你返回的数据越多,你的查询时间也会更长。我在客户这遇到过有返回几G数据的查询,他们还在抱怨为什么查询这么慢,额~~~~~这个……
另外时间统计信息向你展示了下列信息:
- 客户端处理时间
- 总执行时间
- 服务器应答等待时间
这里最重要的维度是客户端处理时间,因为它告诉你SSMS本身需要多长时间来处理你的查询。这里的大部分时间是SSMS用在计算和可视化结果集。同理,结果集越大,SSMS花更多的时间来可视化它,因此查询时间会更长。
小结
STATISTICS IO是查询调优的很好开始,另外我也使用来自客户统计信息的输出来更好的理解有多少数据在网络上传输,SSMS本身需要花多少时间来处理数据。
因此下次你的查询慢的时候,你可以使用客户统计信息来检查在SSMS里的时间花费。或许查询本身很快,但是SSMS需要更多的时间。
感谢关注!
原文链接
https://www.sqlpassion.at/archive/2017/03/27/do-you-need-more-than-statistics-io-for-query-tuning/
对于查询调优,你需要的不止STATISTICS IO的更多相关文章
- Tomcat系列(9)——Tomcat 6方面调优(内存,线程,IO,压缩,缓存,集群)
核心部分 内存 线程 IO 压缩 缓存 集群 一.JVM内存优化 Tomcat内存优化,包括内存大小,垃圾回收策略. Windows 下的catalina.bat,Linux 下的catalina.s ...
- 标量子查询调优SQL
fxnjbmhkk4pp4 select /*+ leading (wb,sb,qw) */ 'blocker('||wb.holding_session||':'||sb.username||')- ...
- sql查询调优之where条件排序字段以及limit使用索引的奥秘
奇怪的慢sql 我们先来看2条sql 第一条: select * from acct_trans_log WHERE acct_id = 1000000000009000757 order b ...
- 性能调优:理解Set Statistics IO输出
性能调优是DBA的重要工作之一.很多人会带着各种性能上的问题来问我们.我们需要通过SQL Server知识来处理这些问题.经常被问到的一个问题是:早上这个存储过程运行时间还是可以的,但到了晚上就很慢很 ...
- hadoop作业调优参数整理及原理(转)
1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘.这中间的过程比较复杂,并且利用到了内 ...
- hadoop作业调优参数整理及原理【转】
1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘.这中间的过程比较复杂,并且利用到了内 ...
- Mycat性能调优指南
本篇内容来自于网络 JVM调优: 内存占用分两部分:java堆内存+直接内存映射(DirectBuffer占用),建议堆内存 适度大小,直接映射内存尽可能大,两种一起占据操作系统的1/2-2/3的内存 ...
- ELASTIC SEARCH 性能调优
ELASTICSEARCH 性能调优建议 创建索引调优 1.在创建索引的使用使用批量的方式导入到ES. 2.使用多线程的方式导入数据库. 3.增加默认刷新时间. 默认的刷新时间是1秒钟,这样会产生太多 ...
- elasticsearch 了解多少,说说你们公司 es 的集群架构,索 引数据大小,分片有多少,以及一些调优手段 ?
面试官:想了解应聘者之前公司接触的 ES 使用场景.规模,有没有做过比较大 规模的索引设计.规划.调优. 解答: 如实结合自己的实践场景回答即可. 比如:ES 集群架构 13 个节点,索引根据通道不同 ...
随机推荐
- Oracle索引批量重置笔记
---单个索引重置语句 alter index indexname rebuild; ---查询数据索引对象语句 select * from user_indexes; ------将数据库的索引 ...
- JavaSE中Map框架学习笔记
前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...
- STL—vector
前面介绍了STL对象的构造与析构以及内存的配置与释放,那具体的容器是怎么应用STL的空间配置器的呢?这篇先介绍STL的容器vector. vector的数据成员 vector只有4个数据成员:3个迭代 ...
- 一大波jQuery事件即将来袭!
一.jQuery事件 1.focus()元素获得焦点 2.blur()元素失去焦点 3.change() 表单元素的值发生变化(可用于验证用户名是否存在) 4.click() 鼠标单击 5.dbcli ...
- css3 变换 transform(2D)
一.transform变换 可做拉伸.压缩.旋转.偏移的效果.需加各个浏览器前缀. 二.transform-origin 为transform属性值的基点,默认值为元素的中心位置,即以元素左上角为坐标 ...
- tensorflow bias_add应用
import tensorflow as tf a=tf.constant([[1,1],[2,2],[3,3]],dtype=tf.float32) b=tf.constant([1,-1],dty ...
- HDU 6047 Maximum Sequence(线段树)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (J ...
- hadoop学习第一天-hadoop初步环境搭建&伪分布式计算配置(详细)
一.虚拟机环境搭建 我们用的虚拟机为vmware,Linux镜像为centOS6.5. vmware安装 安装没什么多说的,一路下一步,但是在新建虚拟机的时候有两个地方需要注意: 1.分配处理器1个就 ...
- 管理 Machine - 每天5分钟玩转 Docker 容器技术(47)
用 docker-machine 创建 machine 的过程很简洁,非常适合多主机环境.除此之外,Docker Machine 也提供了一些子命令方便对 machine 进行管理.其中最常用的就是无 ...
- hive配置过程中出现的一个问题
执行hive里面的insert语句的时候,报错,执行失败查看hadoop的日志文件之后发现错误的详细信息如下: 把hdfs-site.xml中的hadoop.tmp.dir这个属性添加到core-si ...