mysql参数之key_buffer_size
Posted 阿丽in上海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql参数之key_buffer_size相关的知识,希望对你有一定的参考价值。
全局的(非单个连接),只针对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使用的块数
+-------------------+-------+
以上是关于mysql参数之key_buffer_size的主要内容,如果未能解决你的问题,请参考以下文章