前言
数据库调优的故事很多,无数的客户都曾经抱怨过数据库性能问题。什么很慢啊,CPU很高啊等等,但是当你仔细问他相关参数时候,比如CPU平常多少,内存,IO怎么算正常?大多数客户都一脸无辜的望着你说:不知道。
我认为,没有了解自己数据库的基本性能的客户,抱怨数据库性能问题,都是耍流氓!!!
今天我来聊聊如何监视数据库性能!!
什么是数据库性能问题?
这个问题很有意思的。很多客户抱怨数据库有性能问题,但是什么算性能问题呢?大多数客户都是说客户端反应很慢,打开系统显示不出来等等,但是慢是一个相对概念,没绝对的。比如以前是2秒钟打开,变成了4秒钟,客户肯定会抱怨疯的。而如果一个页面从0.5秒到1秒钟打开,系统都增加了1倍的时间。但是客户估计没多少感知。所以所谓慢这个话题就比较流氓,没数据说话的慢也是耍流氓!!
因此我的观点是,用数据说话!!拿出性能数据,如果一条查询从500ms变成了1000ms甚至3000ms 那就肯定是慢了。但是CPU 从30%变成了60% ,系统就一定慢了吗?不一定,而是可能快了!!纳尼…..这是什么逻辑?秀逗了?这就是性能调优的哲学!!
关于数据库性能的哲学问题
数据库性能问题至少有以下几个层面
数据库本身的性能问题
数据库的运行环境既服务器操作系统的相关性能问题
物理环境问题,如网络问题
数据库本身问题和运行环境不可分割, 但是数据库本身使用的服务器资源,不一定是服务器所有的资源,那么也就有这样的情况发生,操作系统曾经有大量的资源,如CPU、内存、磁盘、网络资源。但是数据库本身却未使用到相关资源,在数据库曾经发生瓶颈。而操作系统未发生。这听起来好诡异的事情!!但是是有的。比如X64的系统安装了X86的SQL 版本,而未曾进行相应设置,则SQL 只能只用不超过2G的内存。结果就是数据库会慢的如蜗牛,然后磁盘队列巨高,CPU 几乎100%。这是发生过的!
操作系统的性能问题就更好玩了,一台服务器有可能使用了N多的功能,承载了更多的服务,如何确保资源更多的给到了SQL 这就是需要确认的问题!
而网络层,本来不该有问题的,但是网络产生瓶颈的故事也是发生过的。 虽然现在都千兆,万兆但是依然会有发生。故事是有的,等有酒的时候讲。
关于性能的问题,永远不要看表面,这就是哲学!CPU 过高,有可能是IO不够。IO不够好可能是内存不够。而内存不够并不意味服务器要加内存,有可能是索引问题。所以要搞清楚性能问题,不要猜,数据说话!!而分析要有条理,这点我要感谢我学的专业!对于分析问题比较全面。不要问我学的什么专业!!!
如何监视
说了一堆废话后,我们来点实际的,上菜了。
如何监视性能,如何获得性能的相关数据,其实windows 和SQL 为你准备好了一切。
最简单的神器就是:性能监视器。在管理工具中找到,或者运行 perfmon即可打开如下:
添加计数器里面,就可以看到所能监控的各种指标。这既是你需要了解的数据。
关于性能计数器的时候,其实可以写一篇很长的blog了。这里就不写了。
性能监视器可以帮助你:
实时监控
定时监控,保留数据
跟踪和收集数据
分析报告
实时监控就是看当前系统的性能情况,基本上来说让我想起了当年我在项目上监控整个系统的情景,我的桌面上放了4个显示屏,每个屏幕上放了4个性能监视器,每个监视器里面放十几个指标。时刻注意系统变化,那是一段用酒可以聊的故事。
而定时收集,是可以将数据保存成文件或者到数据库中,这样可以来做历史分析使用。
当然有了数据就要分析,分析就要有神器,分析的申请,下一篇blog介绍,超级好用的神器!!!微软还免费,还开源!!!
关于监视指标
系统的计数器有几千个上万个指标,我们需要看什么呢? 这个就要靠自己的经验和实践了
对于数据库服务器我习惯看的指标有以下的:
对于这些指标,到底什么样的值是正常的,可以到technet上去查说明。
在添加计数器的时候,左下角有一个显示描述,也有比较详细的描述。
另外在即将介绍的神器里面有详细的对参数的说明。敬请期待!
后记
任何不运维和不管理,不监视的数据库系统。抱怨数据库有性能问题都是耍流氓!
用好数据库先从如何监视性能开始!监视性能不仅仅是获取性能指标,而是要理解系统的运转状况。从而知道系统的阀值在什么地方,才能知道什么时候是危险,什么时候是安全!
————————————————
版权声明:本文为CSDN博主「阿特」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/capsicum29/article/details/71436921