SQL Server中的I/O操作类型:

1.对于内存中没有缓存的数据,第一次访问时需要将数据从所在的页面从数据文件中读取到内存中

2.在任何Insert/Update/Delete提交前,SQL Server需要保证日志记录能够写入到日志文件中

3.当SQL Server做Checkpoint时,需要将内存缓冲区中已经发生修改的数据页面同步到硬盘的数据文件中,一般一分钟一次Checkpoint。如果修改较多,频率高一些,写的数量 和上次checkpoint依赖发生的数据修改量有直接关系

4.当SQL Server Buffer Pool发生压力时,会触发Lazy Writer,主动将内存里的一些很久没有使用过的数据页面和执行计划清空。如果这些页面上发生的修改还未由checkpoint写回硬盘,Lazy Writer会将其写回

5.一些特殊操作,例如DBCC Checkdb、Reindex、Updata Statistics、Backup等,会带来较大的硬盘读写。这些操作应该给都发生在一些固定的时间段

数据库级别的I/O影响:
1.Recovery Interval(sp_configure)控制着SQL Server多久进行一次checkpoint

checkpoint pages/sec(Buffer Manager)呈周期性上升

MSSQL:SQL Statistics-Batch Requests/sec:每秒钟完成的批处理(batch)数目

MSSQL:Databases-Active Transactions:SQL Server里打开的,还没有提交的事物数目

2.数据/日志文件的自动增长和收缩

3.数据文件里面碎片程度:页面碎片越多,SQL Server就需要读取和写入更多的页面,增加硬盘读写量

4.表格上的索引结构

5.数据文件和日志文件分开放在不同的磁盘上。如果可能的话,日志文件要放在写入速度较快的磁盘上

6.一个数据文件组是否有多个文件,并且放在不同的磁盘上。但是对于日志文件,在一个时间点,SQL Server只会写一个日志文件,所以在不同磁盘上创建多个日志文件对性能没有任何提高

系统级别的I/O影响:
%Disk Time:只观察其曲线趋势,值本身没有参考价值

%idle Time:磁盘处于空闲状态百分比。当磁盘处于空闲状态时,值为100%。当磁盘满负荷操作时,值为0,所以可以根据该值反推%Disk Time

Disk Bytes/sec:每秒钟磁盘读和写总量(磁盘的吞吐量)。需要先确认该磁盘的最大读写速度才有参考价值,可以看出是否已经达到了该磁盘的读写上限

Avg.disk sec/transfer:磁盘每一次读或写的动作所花的平均时间

Avg.Disk Queue Length:发出的磁盘操作正在等待被磁盘处理的请求数目。理论上讲,这个值不应该长时间大于2

Current Disk Queue Length:当前正在等待被磁盘处理的请求数目

当Avg.Disk Queue Length高时,需要分别观察Disk Bytes/sec和Avg.disk sec/transfer哪个计数器已经达到了其最大值

SQL Server中的性能计数器

Buffer Manager:

Page Reads/sec和Page Writes/sec:每秒钟读写了多少页面。了解到由于Buffer Pool的行为带来了多少磁盘读写

Lazy Writes/sec:Lazy Writer为了清空Buffer Pool每秒钟做了多少页面写入操作

Checkpoint Writes/sec:每秒钟从Buffer Pool里写入到磁盘上的Dirty Page数目

Freespace Scans/sec:在堆(heap)结构里找能够使用的空间。对于没有聚集索引的表格,SQL Server会以堆的形式存储。如果该值很高,应该多建立一些聚集索引

Full Scans/sec:每秒钟SQL Server做全表扫描数目,该值越小越好

Databases(Log Activity):

Log Flush Wait Time:写入日志的动作曾经因为磁盘来不及响应而遇到的等待时间,会导致前端的事务不能提交,会严重影响SQL Server性能。该值应该在绝大多数时间都为0

Log Flush Waits/sec:在每秒提交的事务里,有多少个事务曾经等待过日志写入完成。理想情况下,日志写入应该立刻完成,不需要等待。

SQL Server磁盘I/O性能分析的更多相关文章

  1. SQL Server 2016 查询存储性能优化小结

    SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...

  2. SQL Server 磁盘请求超时的833错误原因分析以及解决

    本文出处:http://www.cnblogs.com/wy123/p/6984885.html 最近遇到一个SQL Server服务器响应极度缓慢,并且出现客户端请求报错的情况,在数据库中的erro ...

  3. SQL Server 2012 列存储索引分析(翻译)

    一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...

  4. SQL Server 2012 列存储索引分析(转载)

    一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...

  5. 【SQL server初级】数据库性能优化一:数据库自身优化(大数据量)

    数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第一部分 数据库性能优化一:数据库自身优化 优化①:增加次数据文件,设置文件自动增长(粗略数据分区) 1.1:增加次数据文 ...

  6. SQL SERVER - 谈死锁的监控分析解决思路

    1 背景 1.1 报警情况 最近整理笔记,打算全部迁移到EVERNOTE.整理到锁这一部分,里边刚好有个自己记录下来的案例,重新整理分享下给大家. 某日中午,收到报警短信,DB死锁异常,单分钟死锁12 ...

  7. SQL SERVER 索引中聚集索引分析和Transact-SQL语句优化

    一. 聚集索引B树分析1.聚集索引按B树结构进行组织的,索引B树种的每一页称为一个索引节点.B树的顶端节点称为根节点.  索引中的低层节点称为叶节点.根节点与叶节点之间的任何索引级别统称为中间级.在聚 ...

  8. 【SQL server初级】数据库性能优化二:数据库表优化

    数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第二部分 数据库性能优化二:数据库表优化 优化①:设计规范化表,消除数据冗余 数据库范式是确保数据库结构合理,满足各种查询 ...

  9. SQL Server CPU 利用率毛刺的分析定位与解决

    一.背景 1.1 问题描述 近期发现一台SQL Server的CPU利用率很不稳定,发现不定时的飙升到100%,更可怕的是在业务繁忙时,影响了业务调用,失败率明显增加,所以,减低CPU的利用率,是迫切 ...

随机推荐

  1. WinCE NAND flash - FAL

    http://blog.csdn.net/renpine/article/details/4572347 http://msdn.microsoft.com/en-US/library/ee48203 ...

  2. Android开发UI之在子线程中更新UI

    转自第一行代码-Android Android是不允许在子线程中进行UI操作的.在子线程中去执行耗时操作,然后根据任务的执行结果来更新相应的UI控件,需要用到Android提供的异步消息处理机制. 代 ...

  3. Hadoop伪分布模式配置部署

    .实验环境说明 注意:本实验需要按照上一节单机模式部署后继续进行操作 1. 环境登录 无需密码自动登录,系统用户名 shiyanlou,密码 shiyanlou 2. 环境介绍 本实验环境采用带桌面的 ...

  4. Compass被墙后如何安装安装

    今天安装 Compass 多时候发现竟然安装不了,且什么提示也没有,让人纳闷.安装代码如下: $ gem install compass 运行该段代码后发现没反应,也没有提示,后来网上查了才知道,竟然 ...

  5. PHP搭建OAuth2.0

    这几天一直在搞OAuth2.0的东西,写SDK啥的,为了更加深入的了解服务端的OAuth验证机制,就自己动手搭了个php下OAuth的环境,并且将它移植到了自己比较熟的tp框架里. 废话不多说,开动. ...

  6. JPA---一对一关系

    在JPA中,使用@oneToOne来标示. package com.yl.demo1.bean.oneToone; import javax.persistence.CascadeType; impo ...

  7. Win32汇编环境配置

    放假了,发现自己知识面窄,趁有时间就打算折腾下Win32汇编.其实在学校也上过汇编课,是基于dos的.那时老师不务正业,老跟我们讲政治经济文化,唯独不怎么讲课;再加上自己的问题,导致了dos汇编学得好 ...

  8. 那些跟钱有关的事儿 z

    这是两段朴实的创业笔记,作者是王信文,2009年南京大学本科毕业,2009年9月到2013年3月在腾讯上海的互动娱乐部门工作,2013年3月到现在和几个前同事一起创立了莉莉丝游戏(手游刀塔传奇是他们后 ...

  9. Codeforces 628E Zbazi in Zeydabad 树状数组

    题意:一个n*m的矩阵,要么是 . 要么是 z ,问可以形成几个大z 分析:(直接奉上官方题解,我感觉说的实在是太好了) Let's precalculate the values zlij, zri ...

  10. HDU 5628 Clarke and math Dirichlet卷积+快速幂

    题意:bc round 72 中文题面 分析(官方题解): 如果学过Dirichlet卷积的话知道这玩意就是g(n)=(f*1^k)(n), 由于有结合律,所以我们快速幂一下1^k就行了. 当然,强行 ...