Key_Buffer_Size参数
| Key_blocks_unused | 0 |
| Key_blocks_used | 14497 | ##这两行看Key_buffer已用尽,没有浪费Key_Buffer
| Key_read_requests | 76306391 |
| Key_reads | 66618 | ##这两行第一行表示请求key_buffer的次数,第二行是key_buffer中找不到,读取磁盘的次数
(Key_blocks_used/(Key_blocks_used+Key_blocks_unused))*100%这个值最好为99-100%
(1-Key_reads/Key_read_requests)*100%这个数越大越好
我暂时设为32M,系统默认是16M,过段时间在看状态值再修改,我预计还可以调大
set global key_buffer_size=33554432;
也可以写在my.cnf里面
Query_Cache
默认应该是关闭的,我看到没有指定query_cache_size参数,还有就是query_cache_min_res_unit参数,该参数决定最小写入query_cache中的结果大小,默认是4k,这个根据实际常用返回结果的大小来确定,设为常用的1/2或1/4,我设的挺小的
set global query_cache_size=67108864;
set global query_cache_min_res_unit=128;
也可以在my.cnf中设置
| Qcache_free_memory | 62820112 | #剩余的query_cache
| Qcache_hits | 1139536 |
| Qcache_inserts | 101560 |
query_cache命中率=(Qcache_hits/(Qcache_hits+Qcache_inserts))*100%
Qcache_lowmem_prunes 这个表示query_cache不足被迫移出的数目,结合Qcache_free_memory修改query_cache_size
Thread_cache
连接池,默认关闭的
| Threads_cached | 9 | #缓存的连接
| Threads_connected | 2 | #目前连接数
| Threads_created | 54026 | #没使用thread_cache,而创建的连接
| Threads_running | 2 | #运行的连接数
set global thread_cache_size=16;
也可以在my.cnf中设置
我参考一个参数设置的就是| Max_used_connections | 14 | 参数,MySQL系统运行中最大连接数,当然和内存也有关系
thread_cache命中率=((Connections-Threads_created)/Connections)*100%
其他还有table_open_cache,tmp_table_size,join_buffer_size,sort_buffer_size,read_buffer的设置都可以优化
MySQL 5.1.3*版本据说有问题,DBA建议慎重选择MySQL5.1系列,最好能升级到最新版本
还有sql使用索引有点讲究,
在myisam的b-tree索引中使用'<','>','!='的时候,是不使用索引的.
联合索引单独使用非第一个列的时候,不使用索引.where后面的or的注意等等
.....