暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql参数之key_buffer_size

我是阿魏 2021-02-19
1355


全局的(非单个连接),只针对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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论