Я использую MySQL 5.5 с механизмом хранения MyISAM и экспериментирую с созданием второго кеша ключей, чтобы повысить производительность , как предложено в этого полезного совета .
Мой вопрос: как только я создал второй кеш ключа, как я могу узнать, что он работает? Для мониторинга глобального кеша ключей мы можем использовать show status like 'key_read%'
, но как мне увидеть ту же информацию для моего вновь созданного кеша ключей?
Для полноты вот как я создал второй кеш ключей:
Измените файл конфигурации ('' /etc/my.cnf ''), чтобы явно добавить другой файл буфера (в дополнение к буферу по умолчанию):
key_buffer_members.key_buffer_size = 512M
Скажите MySQL использовать "key_buffer_members
" для индексов из таблицы "members
".
mysql> CACHE INDEX members IN key_buffer_members;
+------------------+--------------------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------------------+----------+----------+
| myDB.members | assign_to_keycache | status | OK |
+------------------+--------------------+----------+----------+
1 row in set (0.00 sec)
Предварительная загрузка индексов таблиц в кеш:
mysql> LOAD INDEX INTO CACHE members;
+------------------+--------------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------------+----------+----------+
| myDB.members | preload_keys | status | OK |
+------------------+--------------+----------+----------+
1 row in set (3.52 sec)
Без предварительной загрузки блоки индекса по-прежнему будут помещаться в кеш ключей, как требуется запросами. Однако они будут выбраны с диска в случайном порядке, а не последовательно. Предварительная загрузка ключевого кэша с индексными блоками перед началом его использования - разумная оптимизация. Предварительная загрузка позволяет поместить блоки индекса таблицы в буфер кэша ключей наиболее эффективным способом: путем последовательного чтения блоков индекса с диска.
Создайте файл для предварительной загрузки индексов при запуске MySQL. Добавьте следующее к /etc/my.cnf
:
init-file = '/etc/mysqlinit.sql'
и в /etc/mysqlinit.sql
положить:
USE myDB;
CACHE INDEX members IN key_buffer_members;
LOAD INDEX INTO CACHE members;
Перезапустите mysql:
sudo service mysqld condrestart