高性能的MySQL(3)单条查询问题还是服务器问题
2013-10-12 15:31
330 查看
发现问题的时候,要确定是单条查询的问题还是服务器的问题,如果服务器上的所有程序都变慢了,又突然都变好了,每一条查询都变慢了,那么慢查询就不一定是原因,反过来说,如果服务器整体运行没有问题,只有某条查询偶尔变慢,就需要将注意力放到这条特定查询上。
为了确定问题的根源,一般我们通过三种技术来解决。
1、show global status
这个方法实际就是以较高的频率比如一秒执行一次show global status命令来捕获数据,问题出现时,则通过某些计数器(比如 Threads_running、Threads_connected、Questions、Queries)的变化来发现。这个对服务的影响比较小。例如下面的例子
![](http://img1.51cto.com/attachment/201310/132427972.png)
通过awk计算输出每秒的查询数、线程连接数和正在执行查询的线程数,通过一段时间的运行,把数据绘制成图像,可以有利于分析和定位问题。
2、使用show processlist
这个方法通过不停的捕获 show processlist的输出,来观察是否有大量线程处于不正常状态。
使用show processlist命令时,在尾部加上\G可以垂直输出,可以方便的结合sort|uniq|sort一类的命令来计算某个列值出现的次数
如下面的例子
![](http://img1.51cto.com/attachment/201310/145951273.png)
因为是我本地的测试环境,所以没有什么数据,另外ubuntu下的截图太不好用了,只能将就了。
如果MySQL版本较新也可以采用上一篇介绍的方法,查询INFORMATIONA_SCHEMA.PROCESSLIST表。
比如:state大量的线程处于“freeing items”状态是出现了大量有问题查询的很明显的特征
MyISAM一个典型的问题是,他的表级别锁定,在写请求很多时,可能迅速导致服务器级别的线程堆积。
3、使用慢查询
通过设置long_query_time = 0,来根据慢查询日志统计每秒的查询结果
![](http://img1.51cto.com/attachment/201310/151800985.png)
观察可以数据,然后分析。
建议先使用1、2的方法,因为开销低,可以简单重复操
本文出自 “phper-每天一点点~” 博客,请务必保留此出处http://janephp.blog.51cto.com/4439680/1308063
为了确定问题的根源,一般我们通过三种技术来解决。
1、show global status
这个方法实际就是以较高的频率比如一秒执行一次show global status命令来捕获数据,问题出现时,则通过某些计数器(比如 Threads_running、Threads_connected、Questions、Queries)的变化来发现。这个对服务的影响比较小。例如下面的例子
![](http://img1.51cto.com/attachment/201310/132427972.png)
通过awk计算输出每秒的查询数、线程连接数和正在执行查询的线程数,通过一段时间的运行,把数据绘制成图像,可以有利于分析和定位问题。
2、使用show processlist
这个方法通过不停的捕获 show processlist的输出,来观察是否有大量线程处于不正常状态。
使用show processlist命令时,在尾部加上\G可以垂直输出,可以方便的结合sort|uniq|sort一类的命令来计算某个列值出现的次数
如下面的例子
![](http://img1.51cto.com/attachment/201310/145951273.png)
因为是我本地的测试环境,所以没有什么数据,另外ubuntu下的截图太不好用了,只能将就了。
如果MySQL版本较新也可以采用上一篇介绍的方法,查询INFORMATIONA_SCHEMA.PROCESSLIST表。
比如:state大量的线程处于“freeing items”状态是出现了大量有问题查询的很明显的特征
MyISAM一个典型的问题是,他的表级别锁定,在写请求很多时,可能迅速导致服务器级别的线程堆积。
3、使用慢查询
通过设置long_query_time = 0,来根据慢查询日志统计每秒的查询结果
![](http://img1.51cto.com/attachment/201310/151800985.png)
观察可以数据,然后分析。
建议先使用1、2的方法,因为开销低,可以简单重复操
本文出自 “phper-每天一点点~” 博客,请务必保留此出处http://janephp.blog.51cto.com/4439680/1308063
相关文章推荐
- 高性能的MySQL(3)单条查询问题还是服务器问题
- Mysql剖析单条查询(高性能mySql学习笔记)
- 关于mysql查询字符集不匹配问题的解决方法
- 如何写出高性能的mysql查询
- mysql数据库跨服务器查询【需要确定mysql支持FEDERATED ,可以参照文章内容自己配置】
- 如何写出高性能的MySQL查询
- 高性能的MySQL(8)优化服务器配置一并发和负载
- Nginx+Apache+Mysql+Php+eaccelerator+Zend构建高性能的WEB服务器
- MySQL执行SHOW STATUS查询服务器状态状态之 Handler_read_* 详解
- Nginx+Apache+Mysql+Php+eaccelerator+Zend构建高性能的WEB服务器
- mysql-查询锁表的问题
- mysql null 值查询问题 (转)
- mysql查询大量数据,php内存占用溢出问题
- 高性能MySQL之Count统计查询
- Navicat 连接远程服务器 mysql 数据库 的问题
- mysql 设计遍历查询结果中的每行数据遇到的诸多问题
- MySQL执行SHOW STATUS查询服务器状态状态之Handler_read_* 详解
- 高性能mysql笔记---mysql服务器性能剖析[-2-]
- mysql 查询时间条件问题
- 如何解决PHP使用mysql_query查询超大结果集超内存问题