MySql参数优化
windows系统配置文件在xxx\MySQL\MySQL Server 下 my.ini
show global status可以列出mysql服务器运行各种状态值,
show variables 查询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是主-从结构,可以考虑打开其中一台从服务器的慢查询日志,这样既可以监控慢查询,对系统性能影响又小。
连接数
查询数据库最大连接数
show variables like ‘max_connections’;
查询数据库响应的最大连接数
show global status like ‘max_used_connections’;
Max_used_connections / max_connections * 100% ≈ 85%
最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。
innodb_buffer_pool_size(重要)
Innodb_buffer_pool_size: 这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。这个值越大,则磁盘IO越少,查询的速度就会越快。这个值太大了就会影响操作系统的性能。一般将该值设为物理内存的80%。
mysql> SHOW GLOBAL STATUS LIKE ‘Innodb_buffer_pool%’;
Variable_name | Value |
---|---|
Innodb_buffer_pool_read_requests | 25623124 |
Innodb_buffer_pool_reads | 8204 |
一共有25623124个索引读取请求,有8204个请求在内存中没有找到直接从硬盘读取索引,计算索引未命中缓存的概率:
cache_miss_rate = 8204/25623124 = 0.032%
在0.1%以下都很好(每1000个请求有一个直接读硬盘),如果key_cache_miss_rate在 0.01%以下的话,Innodb_buffer_size分配的过多,可以适当减少。
innodb_buffer_pool_size 大小建议
mysql> SHOW GLOBAL STATUS LIKE ‘Innodb_buffer_pool_pages_data’;
Variable_name | Value |
---|---|
Innodb_buffer_pool_pages_data | 1388 | </