写给朋友的MySQL优化建议

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的注意等等
.....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值