全局的(非单个连接),只针对MyISAM引擎的索引缓存,对MyISAM表性能影响较大。对于8.0之前版本,即使不使用该引擎,系统表也是用的MyISAM引擎,默认值(8M),最好在my.cnf调高该值。
[mysqld]key_buffer_size=128M
查看大小:
show variables like 'key_buffer%';+-----------------+----------+| Variable_name | Value |+-----------------+----------+| key_buffer_size | 134217728|+-----------------+----------+
可动态调整,但重启后会失效,最好同时修改my.cnf:
set global key_buffer_size=128*1024*1024;
查看使用情况:
#两者比值越小越好,最好小于0.01:show global status like 'key_read%';+-------------------+------------+| Variable_name | Value |+-------------------+------------+| Key_read_requests | 4230942833 | #表示从缓存中读取索引的次数| Key_reads | 40619222 | #表示从磁盘中读取索引的次数+-------------------+------------+select 40619222/4230942833;+---------------------+| 40619222/4230942833 |+---------------------+| 0.0096 |+---------------------+#下面比值正常接近1,如果批量写和更新,会更小show global status like 'key_write%';+--------------------+-----------+| Variable_name | Value |+--------------------+-----------+| Key_write_requests | 698880624 | #写入到key buffer的请求数| Key_writes | 103966570 | #写入到磁盘的请求数+--------------------+-----------+select 103966570/698880624;+---------------------+| 103966570/698880624 |+---------------------+| 0.1488 |+---------------------+#Key_blocks_unused 可以使用此值来确定使用了多少缓存#Key_blocks_used 值是一个高水位线,指示一次曾经使用的最大块数#两者正常比较接近show global status like 'key_blocks_u%';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| Key_blocks_unused | 53585 | #key buffer未使用的块数| Key_blocks_used | 53585 | #key buffer使用的块数+-------------------+-------+
文章转载自我是阿魏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




