Myisam 内存优化

myisam 存储引擎使用key buffer 缓存索引块,以加速myisam索引的读写速度.对于myisam表的数据块,没有特别的缓存机制,完全依赖于操作系统的io缓存

key_buffer_size 设置.

  1. key_buffer_size 决定 myisam 索引区的大小.直接影响myisam表的存取速率.可以在参数文件中设置key_buffer_size的值,建议至少1/4的内存分配给key_buffer_size.
  2. 我们可以通过key_read_requests,key_reads,key_write_requests和key_writes 等mysql 状态变量来评估索引缓存的效率.
  3. 一般来说,索引块物理读比率key_reads/key_read_requests 应小于0.01,索引块写比率 key_write/key_write_requests 也应应可能小.对于更新和删除操作特别多的应用.key_write/key_write_requests 可能接近1,对于每次更新很多行的记录应用.key_write/key_write_requests就会比较小.
  4. key_buffer 使用率=1-((key_blocks_unused*key_cache_block_size)/key_buffer_size) 一般来说,使用率在80%比较合适,大于可能因索引缓存不足而导致性能下降. 小于80%,存在内存浪费.

使用多个索引缓存

  1. 减少session 间对key buffer 的竞争.

调整’中点插入的策略’

  1. 调节key_cache_division_limit 来控制多大比例的缓存用做warm list. 默认值100.意思全部缓存块都放在warm子表.其实就是不启用’中点插入策略’.如果我们希望大致30%的缓存用来cache 最热的索引块,可以设置.
    set global key_cache_division_limit = 70
    set global hot_cache.key_cache_division_limit = 70;
  2. 调节 key_cache_age_threshold 控制数据块由hot 子表 向warm 表降级的时间.值越小,数据块将越快被降级.

调整read_buffer_size 和read_rnd_buffer_size.

  1. 如果需要顺序扫描myisam 表,可以通过增大read_buffer_size的值来改善性能. 注意read_buffer_size 是每个session独占的,如果默认值太大,会造成内存浪费.
  2. 如果做排序的查询 如order by 子句的sql,适当增大read_rnd_buffer_size的值. 默认值不要太大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值