Параметр 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
.