MySQL中MyISAM引擎优化

Query通过索引检索表数据过程
1.query请求,直接读取key cache中的cache block,有则返回;
2.没有则到.MYI文件中以file block方式读取数据;
3.然后以完全相同的格式存入key cache做为cache block;
4.然后再将key cache中的数据返回;

mysql> show status like 'Key%';
+------------------------+-------------+
| Variable_name          | Value       |
+------------------------+-------------+
| Key_blocks_not_flushed | 0           |
| Key_blocks_unused      | 5779253     |
| Key_blocks_used        | 3184154     |
| Key_read_requests      | 19813453982 |
| Key_reads              | 136159256   |
| Key_write_requests     | 2249688875  |
| Key_writes             | 1567010771  |
+------------------------+-------------+

Key_blocks_not_flushed	        已经更改但未刷新到磁盘的dirty cache block;
Key_blocks_unused		目前未被使用的cache block数目;
Key_blocks_used			已经使用了的cache block数目;
Key_read_requests		cache block被请求读取的总次数;
Key_reads			在cache block中找不到需要读取的key,到“myi”文件读取的次数;
Key_write_requests		被请求修改的总次数;
Key_writes			在cache block中找不到需要修改的key信息后,到“myi”文件写入再修改的次数;

Key_buffer使用率 = Key_blocks_used/ (Key_blocks_used+ Key_blocks_unused)*100%
Key_buffer读命中率 = 1- Key_reads/ Key_read_requests *100%
Key_buffer使用率应该在99%以上,如果过低说明key_buffer_size设置过高,mysql根本用不完;
Key_buffer读命中率应该尽可能高,如果过低说明key_buffer_size设置过低,mysql无法在cache block中添加更多数据;

如果系统主要以写为主,尤其有大量insert语句时,为了提高insert效率,可以讲concurrent_insert设置为2,也就是告诉MyISAM,不管在表中是否有删除行留下的空余空间,都在尾部进行并发插入,使insert和select互补干扰;

一般来说,在每次做了较大的数据删除操作之后都需要做一次optimize优化整理,每个季度有一次optimize操作;

原文地址:http://www.linuxsee.com/mysql/mysql%E4%B8%ADmyisam%E5%BC%95%E6%93%8E%E4%BC%98%E5%8C%96.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值