ИНДЕКС КЭША
Синтаксис
CACHE INDEX tbl_index_list [, tbl_index_list] ... IN key_cache_name tbl_index_list: tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]
Описание
Оператор CACHE INDEX присваивает индексы таблиц определённому кэшу ключей. Он используется только для таблиц MyISAM.
Существует кэш ключей по умолчанию, и его нельзя удалить. Для создания дополнительных кэшей ключей используется системная переменная сервера key_buffer_size.
Связи между индексами таблиц и кэшами ключей теряются при перезапуске сервера. Чтобы автоматически их восстановить, необходимо настроить кэши в файле конфигурации и включить некоторые CACHE INDEX (и необязательно LOAD INDEX) операторы в файле инициализации.
Примеры
Следующий оператор присваивает индексы из таблиц t1, t2 и t3 кэшу ключей под именем hot_cache:
CACHE INDEX t1, t2, t3 IN hot_cache; +---------+--------------------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------+--------------------+----------+----------+ | test.t1 | assign_to_keycache | status | OK | | test.t2 | assign_to_keycache | status | OK | | test.t3 | assign_to_keycache | status | OK | +---------+--------------------+----------+----------+
Реализация (для MyISAM)
Обычно выполнение CACHE INDEX не должно занимать много времени. Внутренне оно реализуется следующим образом:
- Поиск нужного кэша ключей (под LOCK_global_system_variables)
- Открытие таблицы с блокировкой TL_READ_NO_INSERT.
- Очистка исходного кэша ключей для данного файла (под блокировкой кэша ключей)
- Очистка нового кэша ключей для данного файла (безопасность)
- Перемещение файла в новый кэш ключей (под блокировкой обмена файлами)
Единственными возможными длительными операциями являются получение блокировок для таблицы и очистка исходного кэша ключей, если в нём было много блоков ключей для файла.
Мы планируем добавить CACHE INDEX для таблиц Aria, если в этом будет необходимость.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/cache-index/