参数优化:其实是MYSQL官方留给我们适用于我们服务器具体情况的一种解决方式 .
两个命令:
show status #列出MySQL服务器运行各种状态值 Show variables #列出MYSQL服务器配置信息
1: 慢查询
log_slow_queries=slow_queries #这个与以前作用基本相同,并且还是需要重启才能生效(ON:为打开off:为关闭) Slow_launch_time #执行时间超过2秒则被记录。 slow_query_log #这是一个可以在运行时改变的全局变量,表示是否打开慢查询日志,在此处加上即表示ON.
上图代表:系统显示有19054个慢查询。发现后。直接去日志查看就OK。
2: 最大连接数
有时候MYSQL会出现这个错误 ERROR 1040: Too many connections”的情况,这是因为:
访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力;
另外一种情况是MySQL配置文件中max_connections值过小。
如图:
最大连接数为500个.
实际连接数为257
蛮好的。
其实有一个公式来判断他的好坏。 实际最大连接数/最大连接数 =85%左右的话。很不错的。
如果10%一下的话。很可能因为你最大连接数配置高了。
3: Key_buffer_size
分配了 256M 的Key_buffer_size ,他主要用来干嘛?
索引命中率高低的平衡参数。
Key_read_requests #索引的请求 Key_reads #没用到索引。直接去硬盘扫描去了
那么我们怎么去平衡那。这里还有一个公式
Key_reads/key_read_requests 小于0.1%基本还不错的。1000个请求一个区扫描硬盘。
4: key_blocks_u*
Key_blocks_unused #表示未使用的缓存簇(blocks)数 Key_blocks_used表 #示曾经用到的最大的blocks数
现在环境,所有的缓存都用到了,要么增加key_buffer_size,要么就是过渡索引了,把缓存占满了。Key_blocks_used / (Key_blocks_unused + Key_blocks_used) =80%左右还不错.
5: Open Table情况
这里代表是表缓存 table_cache.
Open_tables #打开表的数量 Opened_tables #打开过表的数量
我们查询下table_cache
下面的公式很好的。大约这个情况还不错的.
Open_tables / Opened_tables * 100% >= 85%
Open_tables / table_cache * 100% <= 95%