Spec-Zone.ru › MariaDB

МНОЖЕСТВО

Синтаксис

SET variable_assignment [, variable_assignment] ...

variable_assignment:
      user_var_name = expr
    | [GLOBAL | SESSION] system_var_name = expr
    | [@@global. | @@session. | @@]system_var_name = expr

Также можно задать переменную пользователя в любом выражении с помощью этого синтаксиса:

user_var_name:= expr

Описание

Заявление SET присваивает значения различным типам переменных, которые влияют на работу сервера или вашего клиента. Более старые версии MySQL использовали SET OPTION, но этот синтаксис был устаревшим в пользу SET без OPTION, и был удалён в MariaDB 10.0.

Изменение системной переменной с помощью оператора SET не делает изменение постоянным. Для этого изменение должно быть внесено в файл конфигурации.

Для задания переменных на основе запроса см. ОПЕРАТОР SET.

См. SHOW VARIABLES для получения документации по просмотру системных переменных сервера.

См. Системные переменные сервера для списка всех системных переменных.

GLOBAL / SESSION

При настройке системной переменной область действия может быть указана как GLOBAL или SESSION.

Изменение глобальной переменной влияет на все новые сеансы. Оно не влияет на любые текущие открытые сеансы, включая тот, который произвёл изменение.

Изменение сеансовой переменной влияет только на текущий сеанс.

Если переменная имеет значение сеанса, то не указание ни GLOBAL, ни SESSION будет равносильно указанию SESSION. Если переменная имеет только глобальное значение, то не указание GLOBAL или SESSION будет применено к изменению глобального значения.

DEFAULT

Установка глобальной переменной в DEFAULT восстановит её до значения по умолчанию сервера, а установка сеансовой переменной в DEFAULT восстановит её до текущего глобального значения.

Примеры

  • innodb_sync_spin_loops — это глобальная переменная.
  • skip_parallel_replication — это сеансовая переменная.
  • max_error_count — это и глобальная, и сеансовая.
SELECT VARIABLE_NAME, SESSION_VALUE, GLOBAL_VALUE FROM
 INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE 
  VARIABLE_NAME IN ('max_error_count', 'skip_parallel_replication', 'innodb_sync_spin_loops');
+---------------------------+---------------+--------------+
| VARIABLE_NAME             | SESSION_VALUE | GLOBAL_VALUE |
+---------------------------+---------------+--------------+
| MAX_ERROR_COUNT           | 64            | 64           |
| SKIP_PARALLEL_REPLICATION | OFF           | NULL         |
| INNODB_SYNC_SPIN_LOOPS    | NULL          | 30           |
+---------------------------+---------------+--------------+

Установка значений сеанса:

SET max_error_count=128;Query OK, 0 rows affected (0.000 sec)

SET skip_parallel_replication=ON;Query OK, 0 rows affected (0.000 sec)

SET innodb_sync_spin_loops=60;
ERROR 1229 (HY000): Variable 'innodb_sync_spin_loops' is a GLOBAL variable 
  and should be set with SET GLOBAL

SELECT VARIABLE_NAME, SESSION_VALUE, GLOBAL_VALUE FROM
 INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE 
  VARIABLE_NAME IN ('max_error_count', 'skip_parallel_replication', 'innodb_sync_spin_loops');
+---------------------------+---------------+--------------+
| VARIABLE_NAME             | SESSION_VALUE | GLOBAL_VALUE |
+---------------------------+---------------+--------------+
| MAX_ERROR_COUNT           | 128           | 64           |
| SKIP_PARALLEL_REPLICATION | ON            | NULL         |
| INNODB_SYNC_SPIN_LOOPS    | NULL          | 30           |
+---------------------------+---------------+--------------+

Установка глобальных значений:

SET GLOBAL max_error_count=256;

SET GLOBAL skip_parallel_replication=ON;
ERROR 1228 (HY000): Variable 'skip_parallel_replication' is a SESSION variable 
  and can't be used with SET GLOBAL

SET GLOBAL innodb_sync_spin_loops=120;

SELECT VARIABLE_NAME, SESSION_VALUE, GLOBAL_VALUE FROM
 INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE 
  VARIABLE_NAME IN ('max_error_count', 'skip_parallel_replication', 'innodb_sync_spin_loops');
+---------------------------+---------------+--------------+
| VARIABLE_NAME             | SESSION_VALUE | GLOBAL_VALUE |
+---------------------------+---------------+--------------+
| MAX_ERROR_COUNT           | 128           | 256          |
| SKIP_PARALLEL_REPLICATION | ON            | NULL         |
| INNODB_SYNC_SPIN_LOOPS    | NULL          | 120          |
+---------------------------+---------------+--------------+

SHOW VARIABLES по умолчанию возвращает значение сеанса, если переменная не является только глобальной.

SHOW VARIABLES LIKE 'max_error_count';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_error_count | 128   |
+-----------------+-------+

SHOW VARIABLES LIKE 'skip_parallel_replication';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| skip_parallel_replication | ON    |
+---------------------------+-------+

SHOW VARIABLES LIKE 'innodb_sync_spin_loops';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| innodb_sync_spin_loops | 120   |
+------------------------+-------+

Использование синтаксиса inplace:

SELECT (@a:=1);
+---------+
| (@a:=1) |
+---------+
|       1 |
+---------+

SELECT @a;
+------+
| @a   |
+------+
|    1 |
+------+

См. также

  • Использование last_value() для возврата данных используемых строк
  • ОПЕРАТОР SET
  • Переменная SET
  • Тип данных SET
  • Объявление переменной
Содержимое, воспроизводимое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией 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/set/

Spec-Zone.ru

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