Spec-Zone .ru
спецификации, руководства, описания, API
|
Структурированная переменная отличается от регулярной системной переменной в двух отношениях:
Его значение является структурой с компонентами, которые определяют параметры сервера, которые, как полагают, были тесно связаны.
Могло бы быть несколько экземпляров данного типа структурированной переменной. Каждый имеет другое имя и обращается к различному ресурсу, сохраняемому сервером.
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
оба обращаются к той же самой системной переменной.
Структурированные переменные экземпляры и компоненты следуют за этими правилами именования:
Для данного типа структурированной переменной у каждого экземпляра должно быть имя,
которое уникально в пределах переменных того типа. Однако, имена
экземпляра не должны быть уникальными через структурированные
типы переменной. Например, каждой структурированной переменной назвали экземпляр default
,
так default
не уникально через типы переменной.
Имена компонентов каждого структурированного типа переменной должны быть уникальными через все системные имена переменной. Если бы это не было истиной (то есть, если бы два различных типов структурированных переменных могли бы совместно использовать компонентные имена элемента), то это не было бы четким, какое значение по умолчанию структурированная переменная, чтобы использовать для ссылок на имена элемента, которые не квалифицируются именем экземпляра.
Если структурированное переменное имя экземпляра не является законным как
неупомянутый идентификатор, именуйте его как идентификатор в кавычках, используя обратные галочки.
Например, hot-cache
не является законным, но `hot-cache`
.
global
, session
, и local
не юридические имена экземпляра. Это избегает конфликта с нотацией
такой как @@global.
для
того, чтобы обратиться к неструктурированным системным переменным.var_name
В настоящий момент у первых двух правил нет никакой возможности того, чтобы быть нарушенным, потому что единственный структурированный тип переменной является тем для ключевых кэшей. Эти правила примут большее значение, если некоторый другой тип структурированной переменной будет создаваться в будущем.
С одним исключением можно обратиться к структурированным переменным компонентам, используя составные имена в любом контексте, где простые имена переменной могут произойти. Например, можно присвоить значение структурированной переменной, используя параметр командной строки:
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';
Это - исключение к возможности использовать структурированные имена переменной где угодно может произойти, простое имя переменной.