前言

数据库调优的故事很多,无数的客户都曾经抱怨过数据库性能问题。什么很慢啊,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上去查说明。
在添加计数器的时候,左下角有一个显示描述,也有比较详细的描述。
另外在即将介绍的神器里面有详细的对参数的说明。敬请期待!

后记

任何不运维和不管理,不监视的数据库系统。抱怨数据库有性能问题都是耍流氓!

用好数据库先从如何监视性能开始!监视性能不仅仅是获取性能指标,而是要理解系统的运转状况。从而知道系统的阀值在什么地方,才能知道什么时候是危险,什么时候是安全!

后序会有案例分析,有神器介绍,有具体调优内容,这是一个长线过程。可以讲几十节课程。今天先来点开胃菜。敬请期待!!!

SQL数据库调优之性能监视篇相关推荐

  1. SQL Server调优系列进阶篇(如何维护数据库索引)

    前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常 ...

  2. SQL Server调优系列基础篇(子查询运算总结)

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  3. SQL Server 调优系列基础篇 - 子查询运算总结

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  4. SQL Server调优系列进阶篇(查询优化器的运行方式)

    前言 前面我们的几篇文章介绍了一系列关于运算符的基础介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符. ...

  5. SQL Server调优系列基础篇(常用运算符总结)

    原文:SQL Server调优系列基础篇(常用运算符总结) 前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握 ...

  6. SQL Server调优系列基础篇(联合运算符总结)

    前言 上两篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符的优化技巧,本篇我们总结联合运算符的使用方式和优化技巧. 废话少说,直接进入本篇的主题. 技术准备 基于SQL Server200 ...

  7. SQL Server 调优系列进阶篇 - 查询语句运行几个指标值监测

    前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问 ...

  8. SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)

    前言 前面几篇我们分析了关于SQL Server关于性能调优的一系列内容,我把它分为两个模块. 第一个模块注重基础内容的掌握,共分7篇文章完成,内容涵盖一系列基础运算算法,详细分析了如何查看执行计划. ...

  9. SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)

    SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行) 原文:SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行) 前言 本篇继续玩转模块 ...

最新文章

  1. TCL with SNPS sizeof_collectionget_object_namefindget_libslist_attributes
  2. keepalive学习之软件设计
  3. Oracle:select into 查询没有记录的解决办法
  4. 从草根到百万年薪程序员的十年风雨之路,使用指南
  5. 白话debounce和throttle
  6. 您如何从Python的stdin中读取信息?
  7. 1、MapReduce理论简介
  8. HDU 1162 Eddy's picture (最小生成树)(java版)
  9. 4.2第一个窗口程序
  10. Bailian2807 两倍【序列】
  11. C++ 11使用thread类多线程编程
  12. javascript遍历对象的所有的属性
  13. java jdbc 参数 转义_jdbc URL中的各个参数详解
  14. jad反编译成java_反编译工具jad的使用(将*.class文件变成*.java文件,附带jad.zip包)[转]...
  15. IDEA导入本地项目
  16. poi导出excel报错Failed to read zip entry source
  17. 外点惩罚函数法matlab程序例子,外点罚函数优化实例.doc
  18. 摸爬滚打DirectX11_day_11——三维天空
  19. Python对文件进行重命名
  20. chart.js使用学习——散点图

热门文章

  1. 发现kafka丢消息后的排查
  2. 模板方法模式(Template Method Pattern)
  3. ARM-Linux中断系统
  4. 在Android中显示GIF动画
  5. 该伙伴事务管理器已经禁止了它对远程/网络事务的支持
  6. HDU 1870 愚人节的礼物 栈的应用
  7. css小技巧: select的css控制
  8. 优秀的云存储解决方案Dropbox,现在注册就有2G
  9. JTA(java telnet/ssh client)不能telnet/ssh远程机器问题与解决
  10. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文