myisam索引缓冲,对myisam很重要,缓存myisam表索引数据(misam表的索引只需打开一次,多个线程间共享:而数据文件则是每个线程各自打开)
myisam只缓存索引数据,不缓存行数据,行数据交给OS页面缓存(OS page cache)
若主要使用myisam,推荐设置可用RAM的20%-50%,更多的留给OS,缓存从*.MYD读取的
如果设置太大浪费内存空间,缓存太小缓存命中率低
du –sch db/*.MYI看总大小,设置对应的key buffer size
观察高峰期的缓存命中率
Key_buffer_read_hits=(1-Key_reads/Key_read_requests)*100%
Key_buffer_write_hits=(1-Key_writes/Key_write_requests)*100%
即便全是innodb表,没用myisam,也有必要设置该值用于缓存临时表的索引建议32M
设置key_buffer_size的方法:
my.cnf中:
key_buffer_size=4G
命令行中:
Mysql>set global key_buffer_size=4*1024*1024*1024
在my.cnf文件中配置
Key_buffer_size=4G(32-bit系统下最大4G,64-bit下可以超过)
Hot_cache.key_buffer_size=1G
Cold_cache.key_buffer_size=1G
可以设置多个key_buffer
Set global k1.key_buffer_size=1G
Set global k2.key_buffer_size=1G
提高key buffer的利用率
#将索引load到指定的key buffer
Cache index db1.T1 db1.t2db2.t3 in hot_cache
Cache index db1.t4 db2.t5db2.t6 in cold_cache