在MySQL数据库,MySQL key_buffer_size是MyISAM表的性能影响最大的参数。接下来,我们将详细介绍MySQL key_buffer_size参数的设置,供你参考。

以下配置以MyISAM为主要存储引擎服务器:

MySQL >显示变量like'key_buffer_size;

----------------- ------------ + + +

| variable_name |价值|

----------------- ------------ + + +

| key_buffer_size | 536870912 |

----------------- ------------ + + +

512MB内存被分配到MySQL key_buffer_size。让我们再看看key_buffer_size使用:

MySQL >显示全球地位like'key_read %;

------------------------ ------------- + + +

| variable_name |价值|

------------------------ ------------- + + +

| key_read_requests | 27813678764 |

| key_reads | 6798830 |

------------------------ ------------- + + +

总共有27813678764个索引读取请求,内存中没有6798830个请求,直接从硬盘读取索引,并计算索引丢失缓存的概率。

key_cache_miss_rate = key_reads / key_read_requests * 100%

例如,上述数据,该key_cache_miss_rate指数为0.0244%,4000的读请求有直接读取硬盘,它已经是BT,key_cache_miss_rate都低于0.1%(每1000个请求有直接读取硬盘),如果key_cache_miss_rate 0.01%字以下,key_buffer_size分配太多,可以适当减少。

MySQL服务器还提供了key_blocks_ *参数:

MySQL >显示全球地位like'key_blocks_u %;

------------------------ ------------- + + +

| variable_name |价值|

------------------------ ------------- + + +

| key_blocks_unused | 0 |

| key_blocks_used | 413543 |

------------------------ ------------- + + +

key_blocks_unused表示未使用的缓存集群数量(块),key_blocks_used块表示的最大的数,如服务器,所有缓存的使用,或增加key_buffer_size,或是转换指标,缓存填充理想的设置:

key_blocks_used /(key_blocks_unused + key_blocks_used)* 100% = 80%