使用选项设置程序变量

来自泡泡学习笔记
跳到导航 跳到搜索

许多MySQL程序具有可以使用SET语句在运行时设置的内部变量。

大多数这些程序变量也可以在服务器启动时使用与指定程序选项相同的语法进行设置。例如,mysql有一个max_allowed_packet变量,用于控制其通信缓冲区的最大大小。要将mysql的max_allowed_packet变量设置为16MB的值,可以使用以下任一命令:

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

如果愿意,可以将选项名称中的下划线指定为破折号。以下选项组是等效的。两者都将服务器的键缓冲区大小设置为512MB:

[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;