Spec-Zone.ru › MariaDB

ИНДЕКС КЭША

Синтаксис

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, если в этом будет необходимость.

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержание не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точки зрения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API