6.2.2.5 Использование опций для установки переменных программы
Многие программы MySQL имеют внутренние переменные, которые можно установить во время выполнения с помощью оператора SET. Смотрите Раздел 15.7.6.1, «Синтаксис SET для присваивания переменных» и Раздел 7.1.9, «Использование системных переменных».
Большинство этих переменных программы также можно установить при запуске сервера, используя тот же синтаксис, что и для указания параметров программы. Например, у mysql есть переменная max_allowed_packet, которая управляет максимальным размером буфера связи. Чтобы установить переменную max_allowed_packet для mysql со значением 16 МБ, используйте одну из следующих команд:
mysql --max_allowed_packet=16777216
mysql --max_allowed_packet=16M
Первая команда указывает значение в байтах. Вторая указывает значение в мегабайтах. Для переменных, принимающих числовое значение, значение можно задать с суффиксом K, M или G, чтобы указать множитель 1024, 10242 или 10243. (Например, при установке max_allowed_packet суффиксы обозначают единицы килобайт, мегабайт или гигабайт). Начиная с MySQL 8.0.14, суффикс также может быть T, P и E, чтобы указать множитель 10244, 10245 или 10246. Буквы суффиксов могут быть заглавными или строчными.
В файле опций настройки переменных задаются без ведущих тире:
[mysql]
max_allowed_packet=16777216
Или:
[mysql]
max_allowed_packet=16M
Если нужно, знаки подчеркивания в имени параметра можно задавать как тире. Следующие группы параметров эквивалентны. Обе устанавливают размер кэш-буфера сервера на 512 МБ:
[mysqld]
key_buffer_size=512M
[mysqld]
key-buffer-size=512M
Суффиксы для указания множителя значения можно использовать при установке переменной во время вызова программы, но не для установки значения с помощью SET во время выполнения. С другой стороны, с SET вы можете назначить значение переменной с помощью выражения, что неверно, когда вы устанавливаете переменную при запуске сервера. Например, первая из следующих строк допустима во время вызова программы, но вторая — нет:
$> mysql --max_allowed_packet=16M
$> mysql --max_allowed_packet=16*1024*1024
Наоборот, вторая из следующих строк допустима во время выполнения, но первая — нет:
mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;
© 2025 Oracle
Licensed under the GPLv2 License.