原文:[SQL Server优化]善用系统监视器,确定系统瓶颈

来自: http://hi.baidu.com/solorez/blog/item/f82038fa0e71b78d9e51468c.html

如果您运行的是 Microsoft Windows 服务器操作系统,则可以使用系统监视器图形工具来测量系统当前的性能参数。可以查看包括处理器、内存、缓存、线程和进程等数据。每个对象都有一个相关的的计数器集,用于测量设备使用情况、队列长 度、延时情况,另外还有吞吐量及内部拥塞指示器。

监视磁盘活动涉及两个主要方面:

监视磁盘 I/O 及检测过度换页
隔离 SQL Server 产生的磁盘活动
监视磁盘 I/O 及检测过度换页
可以对下面两个计数器进行监视以确定磁盘活动:

PhysicalDisk: % Disk Time
PhysicalDisk: Avg. Disk Queue Length
在系统监视器中,PhysicalDisk: % Disk Time 计数器监视磁盘忙于读/写活动所用时间的百分比。如果 PhysicalDisk: % Disk Time 计数器的值较高(大于 90%),请检查 PhysicalDisk: Current Disk Queue Length 计数器了解等待进行磁盘访问的系统请求数量。等待 I/O 请求的数量应该保持在不超过组成物理磁盘的轴数的 1.5 到 2 倍。大多数磁盘只有一个轴,但独立磁盘冗余阵列 (RAID) 设备通常有多个轴。硬件 RAID 设备在系统监视器中显示为一个物理磁盘。通过软件创建的多个
RAID 设备在系统监视器中显示为多个实例。

可以使用 Current Disk Queue Length 和 % Disk Time 计数器的值检测磁盘子系统中的瓶颈。如果 Current Disk Queue Length 和 % Disk Time 计数器的值一直很高,则考虑下列事项:

使用速度更快的磁盘驱动器。
将某些文件移至其他磁盘或服务器。
如果正在使用一个 RAID 阵列,则在该阵列中添加磁盘。
如果使用 RAID 设备,% Disk Time 计数器会指示大于 100% 的值。如果出现这种情况,则使用 PhysicalDisk: Avg. Current Disk Queue Length 计数器来确定等待进行磁盘访问的平均系统请求数量。

I/O 依赖的应用程序或系统可能会使磁盘持续处于活动状态。

监视 Memory: Page Faults/sec 计数器可以确保磁盘活动不是由分页导致的。在 Windows 中,换页的原因包括:

配置进程占用了过多内存。
文件系统活动。
如果在同一硬盘上有多个逻辑分区,请使用 Logical Disk 计数器而非 Physical Disk 计数器。查看逻辑磁盘计数器有助于确定哪些文件被频繁访问。当发现磁盘有大量读/写活动时,请查看读写专用计数器以确定导致每个逻辑卷负荷增加的磁盘活动类型,例如,Logical Disk: Disk Write Bytes/sec。

隔离 SQL Server 产生的磁盘活动

可以进行监视以确定由 SQL Server 组件生成的 I/O 活动量的两个计数器为:

SQL Server:Buffer Manager:Page reads/sec
SQL Server:Buffer Manager:Page writes/sec
在系统监视器中,这些计数器通过检查以下操作的性能监视由 SQL Server 组件生成的 I/O 活动量。

向磁盘写入页
从磁盘读取页
如 果这些计数器的值达到硬件 I/O 子系统的容量限制,则需要减小这些值,方法是调整应用程序或数据库以减少 I/O 操作(如索引覆盖、索引优化或规范化),增加硬件的 I/O 容量或添加内存。例如,您可以使用数据库引擎优化顾问分析典型的 SQL Server 工作负荷,并提出有关索引、索引视图和分区的建议以提高服务器的性能。有关数据库引擎优化顾问的详细信息,请参阅优化物理数据库设计。

监视CPU的使用率

定 期监视 Microsoft SQL Server 实例以确定 CPU 使用率是否在正常范围内。持续的高 CPU 使用率可能表明需要升级 CPU 或需要增加多个处理器。或者,高 CPU 使用率也可能表明应用程序的调整或设计不良。优化应用程序可以降低 CPU 的使用率。

一个确定 CPU 使用率的有效方法是使用系统监视器中的 Processor:% Processor Time 计数器。该计数器监视 CPU 执行非闲置线程所用的时间。持续 80% 到 90% 的状态可能表明需要升级 CPU 或需要增加更多的处理器。对于多处理器系统,应为每个处理器监视一个该计数器的独立实例。这一值代表了在一个特定处理器上的处理器时间之和。若要确定所有 处理器的平均时间,请使用 System: %Total Processor Time 计数器。

另外还可以监视下列计数器来监视处理器的使用率:

Processor: % Privileged Time
对应于处理器执行 Microsoft Windows 内核命令(例如处理 SQL Server I/O 请求)所用时间的百分比。如果 Physical Disk 计数器的值很高时该计数器的值也一直很高,则考虑安装速度更快或效率更高的磁盘子系统。
注意:
不同的磁盘控制器和驱动程序所用的内核处理时间不同。高效的控制器和驱动程序所用的特权时间较少,可留出更多的处理器时间给用户应用程序,从而提高总体的吞吐量。
Processor: %User Time
对应于处理器执行用户进程(例如 SQL Server)所用时间的百分比。
System: Processor Queue Length
对应于等待处理器时间的线程数。当一个进程的线程需要的处理器循环数超过可获得的循环数时,就产生了处理器瓶颈。如果有很多进程在争用处理器时间,可能需要安装一个速度更快的处理器。如果使用的是多处理器系统,则可以增加一个处理器。
检 查处理器使用率时,需考虑 SQL Server 实例执行的工作类型。如果 SQL Server 正在做大量的运算,例如包含聚合的查询,或受内存限制但不需要磁盘 I/O 的查询,此时所用的处理器时间可能是 100%。如果这导致其他应用程序的性能降低,应尝试改变工作负荷。例如,让计算机只运行 SQL Server 实例。

若使用率为 100% 左右(表示在处理大量的客户端请求),可能表示进程正在排队,等待处理器时间,并因而导致出现瓶颈。可以通过增加速度更快的处理器来解决这一问题。

监视内存使用量

定期监视 SQL Server 的实例以确认内存使用量在正常范围内。

若要监视内存不足的情况,请使用下列对象计数器:

Memory: Available Bytes
Memory: Pages/sec
Available Bytes 计数器指示当前有多少内存(以字节为单位)可供进程使用。Pages/sec 计数器指示由于页错误而从磁盘取回的页数,或由于页错误而写入磁盘以释放工作集空间的页数。

Available Bytes 计数器的值低表示计算机总内存不足或应用程序没有释放内存。Pages/sec 计数器的比率高表示分页过多。监视 Memory: Page Faults/sec 计数器以确保磁盘活动不是由分页导致。

分 页率偏低(以及由此产生的页错误)是正常的,即使计算机有大量的可用内存。Microsoft Windows 虚拟内存管理器 (VMM) 在剪裁 SQL Server 和其他进程的工作集大小时会收走这些进程的页。此 VMM 活动会导致页错误。若要确定分页过多是由 SQL Server 还是由其他进程导致,请监视用于 SQL Server 进程实例的 Process: Page Faults/sec。

有关解决分页过多的详细信息,请参阅 Windows 操作系统文档。

隔离 SQL Server 所用的内存

默 认情况下,SQL Server 将根据可用系统资源动态改变其内存要求。如果 SQL Server 需要更多内存,它会查询操作系统以确定是否有可用的空闲物理内存,然后使用可用内存。如果 SQL Server 当前不需要分配给它的内存,它会将内存释放给操作系统。但是,您可以覆盖此选项通过 min server memory 和 max server memory 服务器配置选项来动态使用内存。有关详细信息,请参阅服务器内存选项。

若要监视 SQL Server 使用的内存量,请检查下列性能计数器:

Process: Working Set
SQL Server: Buffer Manager: Buffer Cache Hit Ratio
SQL Server: Buffer Manager: Total Pages
SQL Server: Memory Manager: Total Server Memory (KB)
Working Set 计数器显示进程所用的内存量。如果此内存量一直小于 min server memory 和 max server memory 服务器选项设置的内存量,则 SQL Server 被配置为使用过多内存。

Buffer Cache Hit Ratio 计数器仅适用于应用程序。但是,90% 或更高的命中率是令人满意的。添加更多内存,直到该值始终大于 90%。大于 90% 的值表示数据缓存满足所有数据请求中 90% 以上的请求。

如果 Total Server Memory (KB) 计数器值相对于计算机的物理内存量而言一直很高,则可能表示需要更多内存。

[SQL Server优化]善用系统监视器,确定系统瓶颈的更多相关文章

  1. SQL Server优化的方法

    SQL Server优化的方法<一>   查询速度慢的原因很多,常见如下几种:   1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)   2.I/O吞吐量小,形成了 ...

  2. SQL Server 索引维护(1)——系统常见的索引问题

    前言: 在很多系统中,比如本人目前管理的数据库,索引经常被滥用,甚至使用DTA(数据库引擎优化顾问)来成批创建索引(DTA目前个人认为它的真正用处应该是在发现缺失的统计信息,在以前的项目中,用过一次D ...

  3. Sql Server函数全解<五>之系统函数

    原文:Sql Server函数全解<五>之系统函数  系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容.使用SQL SERVER中的系统函数可以在需要的时候获取这些 ...

  4. 深入SQL Server优化【推荐】

    深入sql server优化,MSSQL优化,T-SQL优化,查询优化 十步优化SQL Server 中的数据访问故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性 ...

  5. 第七篇 SQL Server代理作业活动监视器

    本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...

  6. SQL Server 优化存储过程的七种方法

    原文:SQL Server 优化存储过程的七种方法 优化存储过程有很多种方法,下面介绍最常用的7种. 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会 ...

  7. 【译】第七篇 SQL Server代理作业活动监视器

    本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...

  8. 【SQL Server 优化性能的几个方面】(转)

    转自:http://blog.csdn.net/feixianxxx/article/details/5524819     SQL Server 优化性能的几个方面 (一).数据库的设计 可以参看最 ...

  9. SQL Server 优化器特性导致的内存授予相关BUG

    我们有时会遇到一些坑,要不填平,要不绕过.这里为大家介绍一个相关SQL Server优化器方面的特性导致内存授予的相关BUG,及相关解决方式,也顺便回答下邹建同学的相关疑问. 问题描述 一个简单的查询 ...

随机推荐

  1. 浅谈TCP优化(转)

    很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱.Ilya Grigorik 在「High Performance Browser Networking ...

  2. Screwturn搭建企业内部wiki

    企业内部WIKI搭建 本文所使用的是Screwturn 基于asp.net webform和Sql server的. 仅仅要把本文资源下载下来,直接用IIS部署,然后更改web.config的conn ...

  3. Python3.2官方文件翻译--课堂笔记和异常是阶级

    6.7备注 有时喜欢Pasca在"录"和C中"数据体"的数据类型很实用.集合一些数据项. 一个空类定义能够清楚地显示: class Employee: pass ...

  4. EJB_消息驱动发展bean

    消息驱动发展bean Java信息服务(Java MessageService) Java 信息服务(Java Message Service,简称 JMS)是用于訪问企业消息系统的开发商中立的API ...

  5. Android 之流媒体播放器,广播侧下方这么简单。

    没有其他的.希望从事流媒体开发案例.还承诺提供朋友博客.上个星期.制定出最后一点机会. 在这里,与大家分享. 首先要明白的概念:什么是流媒体?转载请注明出处http://blog.csdn.net/g ...

  6. Windows Phone开发(8):关于导航的小技巧

    原文:Windows Phone开发(8):关于导航的小技巧 前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还 ...

  7. dedecms 织梦显示时间格式

    field:pubdate function=GetDateMK(@me)/] 2009-11-10 [field:pubdate function=GetDateTimeMK(@me)/] 2009 ...

  8. 初识google多语言通信框架gRPC系列(二)编译gRPC

    目录 一.概述 二.编译gRPC 三.C#中使用gRPC 四.C++中使用gRPC 无论通过哪种语言调用gRPC,都必须要编译gRPC,因为生成proto访问类时,除了产生标准的数据定义类之外,还需要 ...

  9. [PATCH] UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1(v3.4.x kernel)

    ubuntu touch v3.4 kernel AppArmor v3 backport patch 地址1:https://github.com/multirom-aries/ubuntu-pho ...

  10. 凝视条件推断浏览器&lt;!--[if !IE]&gt;&lt;!--[if IE]&gt;&lt;!--[if lt IE 6]&gt;&lt;!--[if gte IE 6]&gt;

    <!--[if !IE]><!--> 除IE外可识别 <!--<![endif]--> <!--[if IE]> 所有的IE可识别 <![e ...