日期:2014-05-16  浏览次数:20702 次

根据status信息对MySQL服务器进行优化[转超群]

软件编程牛人网

网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的”状态”进行优化。

mysql> show global status;

可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句:

mysql> show variables;

一、慢查询

1、开启慢查询

找到 MySQL 的配置文件 ,my.cnf (Windows?为 my.ini ),在 [mysqld]下增加下面几行:

long_query_time=2
log-slow-queries= /export/mydb/10.4-slow.log

mysql> show variables like '%slow%'; +------------------+-------+ | Variable_name??? | Value | +------------------+-------+ | log_slow_queries | ON??? | | slow_launch_time | 2???? | +------------------+-------+ mysql> show global status like '%slow%'; +---------------------+-------+ | Variable_name?????? | Value | +---------------------+-------+ | Slow_launch_threads | 0???? | | Slow_queries??????? | 4148 | +---------------------+-------+


配置中打开了记录慢查询,执行时间超过2秒的即为慢查询,系统显示有4148个慢查询,你可以分析慢查询日志,找出有问题的SQL语句,慢查询时间不宜设置过长,否则意义不大,最好在5秒以内,如果你需要微秒级别的慢查询,可以考虑给MySQL打补丁:http://www.percona.com/docs/wiki/release:start,记得找对应的版本。

打开慢查询日志可能会对系统性能有一点点影响,如果你的MySQL是主-从结构,可以考虑打开其中一台从服务器的慢查询日志,这样既可以监控慢查询,对系统性能影响又小。

二、连接数

经常会遇见”MySQL: ERROR 1040: Too many connections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配 置文件中max_connections值过小:

mysql> show variables like 'max_connections'; +-----------------+-------+ | Variable_name?? | Value | +-----------------+-------+ | max_connections | 256 ? | +-----------------+-------+

这台MySQL服务器最大连接数是256,然后查询一下服务器响应的最大连接数:

mysql> show global status like 'Max_used_connections'; +----------------------+-------+ | Variable_name??????? | Value | +----------------------+-------+ | Max_used_connections | 245?? | +----------------------+-------+

MySQL服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是:

Max_used_connections / max_connections? * 100% ≈ 85%

最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。