Spec-Zone .ru
спецификации, руководства, описания, API

5.1.5.1. Структурированные Системные Переменные

Структурированная переменная отличается от регулярной системной переменной в двух отношениях:

MySQL 5.7 поддерживает тот структурированный тип переменной, который определяет параметры, управляющие работой ключевых кэшей. У ключевого кэша структурированная переменная есть эти компоненты:

Этот раздел описывает синтаксис для того, чтобы обратиться к структурированным переменным. Ключевые переменные кэша используются для примеров синтаксиса, но определенных деталей о том, как ключевые кэши работают, находятся в другом месте, в Разделе 8.9.2," MyISAM Ключевой Кэш".

Чтобы обратиться к компоненту структурированного переменного экземпляра, можно использовать составное имя в instance_name.component_name формат. Примеры:

hot_cache.key_buffer_sizehot_cache.key_cache_block_sizecold_cache.key_cache_block_size

Для каждой структурированной системной переменной, экземпляра с именем default всегда предопределяется. Если Вы обращаетесь к компоненту структурированной переменной без какого-либо имени экземпляра, default экземпляр используется. Таким образом, default.key_buffer_size и key_buffer_size оба обращаются к той же самой системной переменной.

Структурированные переменные экземпляры и компоненты следуют за этими правилами именования:

В настоящий момент у первых двух правил нет никакой возможности того, чтобы быть нарушенным, потому что единственный структурированный тип переменной является тем для ключевых кэшей. Эти правила примут большее значение, если некоторый другой тип структурированной переменной будет создаваться в будущем.

С одним исключением можно обратиться к структурированным переменным компонентам, используя составные имена в любом контексте, где простые имена переменной могут произойти. Например, можно присвоить значение структурированной переменной, используя параметр командной строки:

shell> mysqld --hot_cache.key_buffer_size=64K

В файле опции используйте этот синтаксис:

[mysqld]hot_cache.key_buffer_size=64K

Если Вы запускаете сервер с этой опции, он создает ключевой названный кэш hot_cache с размером 64 Кбит в дополнение к ключевому кэшу значения по умолчанию, у которого есть размер значения по умолчанию 8 МБ.

Предположите, что Вы запускаете сервер следующим образом:

shell> mysqld --key_buffer_size=256K
        \         --extra_cache.key_buffer_size=128K \         --extra_cache.key_cache_block_size=2048

В этом случае сервер устанавливает размер ключевого кэша значения по умолчанию к 256 Кбитам. (Вы, возможно, также записали --default.key_buffer_size=256K.), Кроме того, сервер создает второй ключевой названный кэш extra_cache у этого есть размер 128 Кбит, с размером буферов блоков для того, чтобы кэшировать таблицу индексируют блочный набор к 2048 байтам.

Следующий пример запускает сервер с трех различных ключевых кэшей, имеющих размеры в 3:1:1 отношение:

shell> mysqld --key_buffer_size=6M \         --hot_cache.key_buffer_size=2M \         --cold_cache.key_buffer_size=2M

Структурированные значения переменных могут быть установлены и получены во времени выполнения также. Например, чтобы установить ключевой названный кэш hot_cache к размеру 10 МБ используйте любой из этих операторов:

mysql> SET GLOBAL hot_cache.key_buffer_size =
        10*1024*1024;mysql> SET @@global.hot_cache.key_buffer_size =
        10*1024*1024;

Чтобы получить размер кэша, сделайте это:

mysql> SELECT
        @@global.hot_cache.key_buffer_size;

Однако, следующий оператор не работает. Переменная не интерпретируется как составное имя, но как простая строка для a LIKE работа сопоставления с образцом:

mysql> SHOW GLOBAL VARIABLES LIKE
        'hot_cache.key_buffer_size';

Это - исключение к возможности использовать структурированные имена переменной где угодно может произойти, простое имя переменной.