性能调优之mysql通过status性能优化
mysql同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果,因此简单地根据某个给出方案来配置mysql是行不通的,最好能使用 status信息对mysql进行具体的优化。
mysql> show global status;
可以列出mysql服务器运行各种状态值,另外,查询mysql服务器配置信息语句:
mysql> show variables;
根据status信息对mysql优化的项目如下:
一、慢查询
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';
mysql服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是
max_used_connections / max_connections * 100% ≈ 85%
最大连接数占上限连接数的85%左右,如果发现比例在10%以下,mysql服务器连接数上限设置的过高了。