MySQL сервер поддерживает множество системных переменных, которые определяют, как он сконфигурирован, а, значит, как именно будет работать.
Все системнные переменные имеют какие-то значения по умолчанию и могут быть переустановлены либо в конфигурационном файле, либо в опциях командной строки. Большинство системных переменных могут устанавливаться динамически с помощью команды SET и не требуют перезапуска сервера. Такие переменные называются динамическими.
Динамические переменные.
Динамические переменные бывают двух типов: глобальные и сеансовые. В таблице приведены основные отличия глобальных и сеансовых переменных:
GLOBAL(Глобальные) | GLOBAL / SESSION(Глобальные и сеансовые) | SESSION(Сеансовые) | |
Действуют на все сессии (сеансы) в БД;Действуют на новые сессии | Действуют на текущую сессию | ||
Для установки необходима привилегия SUPER | Для установки не требуют привелегий | ||
SET GLOBAL <variable>
SET @@global.<variable> |
SET SESION <variable>
SET @@session. <variable> |
Многие из динамических переменных могут быть и глобальными, и сеансовыми.
Но существуют переменные, которые принадлежат только к одной или другой категории.
Например:
- Только глобальные переменные: guery_cache_size, key_buffer_size, большинство переменных определяющих параметры памяти. Они не имеют сеансового значения.
- Только сеансовые переменные: autocommit.
- Переменные, которые могут принимать и глобальное и сеансовое значение – sort_buffer_size.
Установка сеансовых переменных не требует специальных привилегий, но они могут быть установлены только для текущей сессии, а
не для других клиентов.
Сеансовые переменные могут устанавливаться с помощью ключевых слов LOCAL или @@local, либо их синонимов SESSION или @@session. Если в команде SET не указывается тип переменной GLOBAL ли SESSION, то устанавливается значение сеансовой переменной.