Системные переменные
Selena предоставляет множество системных переменных, которые можно устанавливать и изменять в соответствии с вашими требованиями. В этом разделе описываются переменные, поддерживаемые Selena. Вы можете просмотреть настройки этих переменных, выполнив команду SHOW VARIABLES в вашем MySQL-клиенте. Вы также можете использовать команду SET для динамической установки или изменения переменных. Вы можете сделать эти переменные действующими глобально для всей системы, только в текущей сессии или только в одном запросе.
Переменные в Selena ссылаются на наборы переменных в MySQL, но некоторые переменные совместимы только с протоколом клиента MySQL и не функционируют в базе данных MySQL.
ПРИМЕЧАНИЕ
Любой пользователь имеет привилегию выполнять SHOW VARIABLES и делать переменную действующей на уровне сессии. Однако только пользователи с привилегией OPERATE уровня SYSTEM могут делать переменную действующей глобально. Глобально действующие переменные вступают в силу для всех будущих сессий (исключая текущую сессию).
Если вы хотите внести изменение настройки для текущей сессии, а также применить это изменение ко всем будущим сессиям, вы мо жете внести изменение дважды: один раз без модификатора
GLOBALи один раз с ним. Например:SET query_mem_limit = 137438953472; -- Применить к текущей сессии.
SET GLOBAL query_mem_limit = 137438953472; -- Применить ко всем будущим сессиям.
Иерархия и типы переменных
Selena поддерживает три типа (уровня) переменных: глобальные переменные, переменные сессии и подсказки SET_VAR. Их иерархические отношения следующие:
- Глобальные переменные действуют на глобальном уровне и могут быть переопределены переменными сессии и подсказками
SET_VAR. - Переменные сессии действуют только в текущей сессии и могут быть переопределены подсказками
SET_VAR. - Подсказки
SET_VARдействуют только в текущем запросе.
Просмотр переменных
Вы можете просмотреть все или некоторые переменные, используя SHOW VARIABLES [LIKE 'xxx']. Пример:
-- Показать все переменные в системе.
SHOW VARIABLES;
-- Показать переменные, соответствующие определенному шаблону.
SHOW VARIABLES LIKE '%time_zone%';
Установка переменных
Установка переменных глобально или для одной сессии
Вы можете установить переменные для действия глобально или только в текущей сессии. При установке глобально новое значение будет использоваться для всех будущих сессий, в то время как текущая сессия по-прежнему использует исходное значение. При установке "только для текущей сессии" переменная будет действовать только в текущей сессии.
Переменная, установленная с помощью SET <var_name> = xxx;, действует только для текущей сессии. Пример:
SET query_mem_limit = 137438953472;
SET forward_to_master = true;
SET time_zone = "Asia/Shanghai";
Переменная, установленная с помощью SET GLOBAL <var_name> = xxx;, действует глобально. Пример:
SET GLOBAL query_mem_limit = 137438953472;
Следующие переменные действуют только глобально. Они не могут действовать для одной сессии, что означает, что вы должны использовать SET GLOBAL <var_name> = xxx; для этих переменных. Если вы попытаетесь установить такую переменную для одной сессии (SET <var_name> = xxx;), будет возвращена ошибка.
- activate_all_roles_on_login
- character_set_database
- default_rowset_type
- enable_query_queue_select
- enable_query_queue_statistic
- enable_query_queue_load
- init_connect
- lower_case_table_names
- license
- language
- query_cache_size
- query_queue_fresh_resource_usage_interval_ms
- query_queue_concurrency_limit
- query_queue_mem_used_pct_limit
- query_queue_cpu_used_permille_limit
- query_queue_pending_timeout_second
- query_queue_max_queued_queries
- system_time_zone
- version_comment
- version
Кроме того, настройки переменных также поддерживают константные выражения, такие как:
SET query_mem_limit = 10 * 1024 * 1024 * 1024;
SET forward_to_master = concat('tr', 'u', 'e');