Windows下使用性能监视器监控SqlServer的常见指标
作者:junjie 发布时间:2024-01-26 17:52:44
上边文章中提到win的性能监视器是监控数据库性能必备的工具,接下来我就给大家介绍一些常见的监控指标,其实无非就是磁盘,cpu,内存等硬件的运行指标还有数据库自身的像锁啊、用户连接数啊、还有就是根据自身业务决定的需要注意的参数指标。
1.SQL Server Buffer: Buffer Cache Hit Ratio
这是一个很重要查看内存是否不足的参数。SQL Server Buffer中的计数器Buffer Cache Hit Ratio用来指出SQLServer从缓存中而不是磁盘中获得数据的频率。sqlserver会将某些查询过的数据缓存在内存中用于以后再次查询使用。当一个查询A进来了以后数据库会编译这个sql看看需要哪些数据,然后执行计划首先去内存中找看是否有这次查询所需要的数据,如果这个同样的sql刚才已经执行过了或者该表的数据已经缓存在内存中,但是却没有在内存中找到数据,那就有可能是因为内存不足引起内存挤压将缓存数据写回硬盘或者释放掉来提供数据库其他请求来使用。一般来说oltp的系统,这个值最起码也应该在90%以上,理想值是99%。如果这个值低于90%,那建议你应该添加内存了。
2.Memory: Pages/sec
这个也是监控内存是否不足的一个比较重要的参数。这个计数器记录的是每秒钟内存和磁盘之间交换的页面数。频繁的交换页面就会消耗更多的io,这会影响到服务器的性能。打个比方,超市有一个货架上边摆满了新进的各种商品a、b、c,当你去超市想买a的时候直接去货架就能拿到a,方便的很,当顾客进超市逛一圈以后跟你说我怎么没有发现旧商品d呢,我就想买这个d,然后工作人员就会去仓库把商品d拿出来摆放到货架上供下次顾客来买。但是货架摆满了怎么办呢,只能将时间长没有人问津的a下架放到仓库然后空出来地方摆放d,但是下次另一个顾客来了又有想要购买a的意向,工作人员就得再次把a拿出来替换掉货架上的d。其实内存就是这个货架,硬盘就是仓库。因为货架太小了,导致只能频繁的更换货架上的商品来提供正常的运营,想减少反复来回搬运产生的io开销,只能换个更大的货架来满足需求。
如果服务器上只跑的sqlserver,那这个指标的理想范围应该是0-20之间,偶尔超过20的话影响不大,如果这个值频繁的超过20,那说明你的这台服务器可能需要加内存了。
当然这个指标要配合着上一个指标Buffer Cache Hit Ratio来看,如果上一个指标缓冲命中一直在99%或者更高,而这个期间内你的页交换一直在20以上,那意味着不仅仅是内存不足,而且其他的程序占用了系统内存。
3.Memory: Available Bytes
另一个监控内存情况的计数器就是这个。这个值最少最少也得大于5M,因为sqlserver需要始终维持5-10m的自由内存用于分配,当这个值低于5m的时候,那sqlserver可能会因为缺少内存而产生性能瓶颈。
4.Physical Disk: % Disk Time
这个计数器记录的是磁盘的繁忙程度(是整个磁盘阵列或者物理磁盘的繁忙程度)。理论上这个值应该低于55%,如果持续的高于55%,那说明这台服务器上可能有io瓶颈。
如果只是偶尔的出现几次,那不必担心,但是可以对应的找到这个时间点,数据库正在干嘛执行了哪些语句,对应的优化一下。
5.Physical Disk: Avg. Disk Queue Length
这是一个比较重要的查看磁盘io情况的指标。理论上每个物理磁盘的值不应该超过2。当然这个值是需要计算的,比如用4块物理盘做了个raid10,此时在一个监控周期内磁盘队列的均值是10,那每块磁盘的队列值就是10/4=2.5,那么就可以说这个磁盘阵列存在i/o瓶颈了。这个跟之前的disktime指标一样,偶尔出现不必担心,如果长时间出现,那就得着手考虑解决磁盘的io性能问题了。
6.Processor: % Processor Time
这是监控cpu情况的一个指标(类似于disk time)。这个是观察cpu利用率的一个关键参数。如果Processor Time计数器的值持续超过80%,说明cpu存在瓶颈问题。如果只是偶尔出现,那说明可能是这个时间点有个特别消耗cpu的查询,可以在下一次这个时间点来临的时候尝试抓一下sql并且优化它。如果在某一个时间点以后cpu一直飙高,常见的情况就是:1.突然间的高并发2.索引重整3.突然一个经常使用的数据量特别大的索引失效了4.死锁5.其他好多好多。先找到问题所在,在处理掉它。
7.System: Processor Queue Length
这个指标类似于disk queue length,也是算单个cpu的。单个cpu不能超过2,比如你是2u的机器,那这个值不应该超过4,如果在一个监控周期内持续性的超过4,那就可能出现cpu瓶颈了。
基本上常用的就是这么多,还有好多可以配合你检测sqlserver性能的计数器,有兴趣的可以自己百度下。


猜你喜欢
- Line plotsAxes3D.plot(xs, ys, *args, **kwargs)绘制2D或3D数据参数描述xs, ysX轴,Y轴
- 如下所示:d = { 'a': '0.0000', 'b':
- Pytest-sugar是一款用来改善控制台显示的插件,增加了进度条显示,使得在用例执行过程中可以看到进度条,而且进度条是根据用例是否通过标
- 废话不多说,看代码吧!import tkinterfrom tkinter import ttkdef go(*args): #
- 大家可能经常会遇到这种情况:sql="select * from table"set rs=conn.execute(s
- 运行代码框<html><META HTTP-EQUIV="Content-Type" content=
- python环境 3.6.5 win7 linux环境同理先尝试了PyInstaller ,打包时一直提示 no module named
- AlexNet (2012 )2012 年,AlexNet 由 Alex Krizhevsky 为 ImageNet 大规模视觉识别挑战赛
- 目录一、安装与配置二、定义模型三、生成模型四、访问Django Admin五、操作数据六、最后一、安装与配置Djongo的项目官方地址为:h
- 前言 日益增长的分布式应用需求要求实现更好分布式的软件环境,不断推动着分布式技术的进步。Oracle数据复制是实现分布式数据环境的一种技术,
- 这个效果本身难度不大,主要在程序结构和扩展中下了些功夫,务求用起来更方便,能用在更多的地方。程序特点 1,同一个提示框用在多个触发元素时,只
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理
- 大家都知道Python运行速度很慢,但是轮子多,因此用户十分广泛,在各种领域上都能用到Python,但是最头疼的还是,解决运行速度问题,因此
- 开启mysql的远程访问权限默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程
- 工具选择 一。sqlyog 这个工具还是很强大的,但是面对5个G的数据库来说,也只能罢工了,简单说,本机导入可以,从本机导入服务器不行。 二
- requests库简介requests 库是一个常用的用于 http 请求的模块,它使用 python 语言编写,可以方便的对网页进行爬取,
- 一、安装库需要安装pywin32库pip install pywin32二、代码原理WPS高清图片导出需要会员,就为了一个这个小需求开一个会
- 本文实例讲述了PHP在线打包下载功能实现方法。分享给大家供大家参考,具体如下:昨天晚上,为了弄这个打包下载的事,弄的事焦头烂额。有几个问题,
- 在JavaScript中,可以用三种方法来遍历对象的property:1.for/in。可以使用for/in语句遍历对象自身的propert
- 我在网站上设置了邮件列表功能,实现用户自动订阅和发送,但很多用户输入和提交的邮件地址格式都是无效的,无法处理。请问如何解决这一问题?&nbs