Параметр
key_buffer_size
задаёт размер памяти, выделяемый под хранение индексных блоков для таблиц типа MyISAM, которые могут быть считаны из памяти, вместо того, что бы обращаться к диску для чтения.
key_buffer_size
— один из наиболее важных параметров в настройке производительности MySQL. Данный буфер является общим для всех пользовательских процессов.
Что бы узнать, необходимо ли изменять текущее значение key_buffer_size
— выполняем:
MariaDB [(none)]> show variables like 'key_buffer_size'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | key_buffer_size | 16777216 | +-----------------+----------+
Текущее значение — 16 МБ.
Далее:
MariaDB [(none)]> SHOW STATUS LIKE "key%"; +------------------------+----------+ | Variable_name | Value | +------------------------+----------+ | Key_blocks_not_flushed | 0 | | Key_blocks_unused | 12678 | | Key_blocks_used | 1233 | | Key_blocks_warm | 70 | | Key_read_requests | 23255430 | | Key_reads | 10765 | | Key_write_requests | 33749 | | Key_writes | 23912 | +------------------------+----------+
Тут нас интересуют два значения — Key_reads
и Key_read_requests
.
Key_reads
— количество считываний индексных блоков непосредственно с диска в кеш MyISAM;Key_read_requests
— количество считывание блоков из самого кеша.
Теперь мы можем подсчитать «key_cache_hit_percentage
» по такой формуле:
key_cache_hit_percentage = (1 - Key_reads/Key_read_requests) * 100
В данном случае значение получается:
>>> key_cache_hit_percentage = (1.0 - (107650.0 / 23255430.0)) * 100; print(key_cache_hit_percentage) 99.5370973575
Если значение меньше 90% — есть смысл подумать над увеличением значения key_buffer_size
.