加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

高性能的MySQL(3)单条查询问题还是服务器问题

发布时间:2016-08-06 14:49:25 所属栏目:MySql教程 来源:站长网
导读:发现问题的时候,要确定是单条查询的问题还是服务器的问题,如果服务器上的所有程序都变慢了,又突然都变好了,每一条查询都变慢了,那么慢查询就不一定是原因
发现问题的时候,要确定是单条查询的问题还是服务器的问题,如果服务器上的所有程序都变慢了,又突然都变好了,每一条查询都变慢了,那么慢查询就不一定是原因,反过来说,如果服务器整体运行没有问题,只有某条查询偶尔变慢,就需要将注意力放到这条特定查询上。

为了确定问题的根源,一般我们通过三种技术来解决。

1、show global status

这个方法实际就是以较高的频率比如一秒执行一次show global status命令来捕获数据,问题出现时,则通过某些计数器(比如 Threads_running、Threads_connected、Questions、Queries)的变化来发现。这个对服务的影响比较小。例如下面的例子

高性能的MySQL(3)单条查询问题还是服务器问题

通过awk计算输出每秒的查询数、线程连接数和正在执行查询的线程数,通过一段时间的运行,把数据绘制成图像,可以有利于分析和定位问题。

2、使用show processlist

这个方法通过不停的捕获 show processlist的输出,来观察是否有大量线程处于不正常状态。

使用show processlist命令时,在尾部加上G可以垂直输出,可以方便的结合sort|uniq|sort一类的命令来计算某个列值出现的次数

如下面的例子

高性能的MySQL(3)单条查询问题还是服务器问题

因为是我本地的测试环境,所以没有什么数据,另外ubuntu下的截图太不好用了,只能将就了。

如果MySQL版本较新也可以采用上一篇介绍的方法,查询INFORMATIONA_SCHEMA.PROCESSLIST表。

比如:state大量的线程处于“freeing items”状态是出现了大量有问题查询的很明显的特征

MyISAM一个典型的问题是,他的表级别锁定,在写请求很多时,可能迅速导致服务器级别的线程堆积。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读