Spec-Zone .ru
спецификации, руководства, описания, API
|
CACHE INDEXtbl_index_list
[,tbl_index_list
] ... [PARTITION (partition_list
| ALL)] INkey_cache_name
tbl_index_list
:tbl_name
[[INDEX|KEY] (index_name
[,index_name
] ...)]partition_list
:partition_name
[,partition_name
][, ...]
CACHE
INDEX
оператор присваивается, таблица индексирует к определенному ключевому кэшу. Это используется
только для MyISAM
таблицы. После индексирования были присвоены, они могут быть
предварительно загружены в кэш при желании с LOAD INDEX INTO CACHE
.
Следующий оператор присваивается, индексирует от таблиц t1
, t2
,
и t3
к ключевому названному кэшу hot_cache
:
mysql> 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 |+---------+--------------------+----------+----------+
Синтаксис CACHE INDEX
позволяет Вам определить, что только определенный индексирует от
таблицы, должен быть присвоен кэшу. Текущая реализация присваивается, вся таблица индексирует к кэшу, таким
образом нет никакой причины определить что-либо кроме имени таблицы.
Ключевой кэш упоминается в a CACHE
INDEX
оператор может быть создан, устанавливая его размер с оператором установки параметра или в
установках параметров сервера. Например:
mysql> SET GLOBAL
keycache1.key_buffer_size=128*1024;
К ключевым параметрам кэша можно получить доступ как элементы структурированной системной переменной. См. Раздел 5.1.5.1, "Структурированные Системные Переменные".
Ключевой кэш должен существовать прежде, чем можно будет присвоиться, индексирует к этому:
mysql> CACHE INDEX t1 IN
non_existent_cache;
ERROR 1284 (HY000): Unknown key cache 'non_existent_cache'
По умолчанию таблица индексирует, присваиваются основному (значение по умолчанию) ключевой кэш, создаваемый при запуске сервера. Когда ключевой кэш уничтожается, все индексирует присвоенный ему, становятся присвоенными ключевому кэшу значения по умолчанию снова.
Индексируйте присвоение, влияет на сервер глобально: Если один клиент присваивает индексирование данному кэшу, этот кэш используется для всех запросов, включающих индексирование, независимо от того какой клиент выпускает запросы.
В MySQL 5.7 этот оператор также поддерживается для разделенного MyISAM
таблицы.
Можно присвоиться один, или больше индексирует для один, несколько, или все разделы к данному ключевому кэшу.
Например, можно сделать следующее:
CREATE TABLE pt (c1 INT, c2 VARCHAR(50), INDEX i(c1)) PARTITION BY HASH(c1) PARTITIONS 4;SET GLOBAL kc_fast.key_buffer_size = 128 * 1024;SET GLOBAL kc_slow.key_buffer_size = 128 * 1024;CACHE INDEX pt PARTITION (p0) IN kc_fast;CACHE INDEX pt PARTITION (p1, p3) IN kc_slow;
Предыдущий набор операторов выполняет следующие действия:
Создает разделенную таблицу с 4 разделами; эти разделы автоматически называют p0
, ..., p3
; этой таблице назвали индексирование
i
на столбце c1
.
Создает 2 ключевых названные кэша kc_fast
и kc_slow
Присваивает индексирование для раздела p0
к kc_fast
ключевой кэш и индексирование для разделов p1
и p3
к kc_slow
ключевой кэш; индексирование для остающегося раздела (p2
) использует
ключевой кэш значения по умолчанию сервера.
Если Вы хотите вместо этого присвоить индексирование для всех разделов в таблице pt
к единственному ключевому названному кэшу kc_all
, можно использовать любой из
следующих 2 операторов:
CACHE INDEX pt PARTITION (ALL) IN kc_all;CACHE INDEX pt IN kc_all;
Эти два оператора, только показанные, эквивалентны, и выпускающий любого из них имеет точно тот же самый эффект.
Другими словами, если Вы хотите присвоиться, индексирует для всех разделов разделенной таблицы к тому же самому
ключевому кэшу, тогда PARTITION (ALL)
пункт является дополнительным.
Когда присвоение индексирует для многократных разделов к ключевому кэшу, разделы не должны быть непрерывными, и Вы не обязаны перечислять их имена в любом определенном порядке. Индексирует для любых разделов, которые явно не присваиваются ключевому кэшу, автоматически используют ключевой кэш значения по умолчанию сервера.
В MySQL 5.7 индексируйте предварительно загружение, также поддерживается для разделенного MyISAM
таблицы. Для получения дополнительной информации см. Раздел
13.7.6.5,"LOAD INDEX INTO CACHE
Синтаксис".
В MySQL 5.7.1, gtid_next
должен быть установлен в AUTOMATIC
прежде,
чем сделать это заявление. Это ограничение не применяется в MySQL 5.7.2 или позже. (Ошибка #16062608, Ошибка
#16715809, Ошибка #69045)