Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2796876
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Mysql/postgreSQL

2014-11-27 20:23:03

                                        MySQL的活动会话

    在ORACLE数据库里面,我们可以通过AAS(平均活动会话)来判定数据库的负载高低或是健康情况.
其基本原理是,比如在一个64个CPU的系统中,在任意的时刻中,如果AAS的数量等于CPU的线程数,
且会话全是在CPU上,说明CPU已经跑满,如果不会部在CPU上,说明系统有等待也是不正常。
二.如果AAS大于CPU数量,那说明很多会话由于各种原因被阻塞了,系统肯定出现了性能问题。
结合OEM的等待会话的分类,可以方便的判断性能问题来源.

   对于MySQL来说(主要指Innodb),不像ORACLE那样各种指标显示非常直接。但是有个状态变量
Threads_running也有一定的参考意义,可以认为是AAS的变种.结合该变量和CPU LOAD的对比,也可以
判断系统的好坏情况.


  Threads_running是表示当线程进入Innodb执行的数量.比如现在系统是24 CPU,当Threads_running和
CPU load很接近时,表示现在全部在执行sql语句,当然在这其中可能还有其他的情况,比如内部的
mutex争用,但是没有办法反映出来 ,但是我们只要记住当两者很接近时,系统基本上快跑满了,需要
引起DBA的注意.


   当Threads_running大于CPU load时,且CPU load已经跑满,这时候最有可能的原因就是CPU已经不够用了,
需要进一步分析原因.如果CPU没有跑满,那这个时候可以判定出现了锁等待之类的问题.


  通过zabbix之类的工具,可以方便的可视化Threads_running和CPU load的曲线,某系统高峰期经常Threads_running
的指标高于CPU load,分析出来的原因就是应用中有严重的行锁等待造成.

阅读(2592) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

love4u2015-09-06 16:03:52

重要的事情顶三次!

love4u2015-09-06 16:03:34

再顶!

love4u2015-09-06 16:03:18


路过帮顶!