MySQL 8.4 Release Notes
6.2.2.5 使用选项设置程序变量
许多MySQL程序都有内部变量,可以在运行时使用SET
语句来设置。请参阅第15.7.6.1节,“SET Syntax for Variable Assignment”,和第7.1.9节,“Using System Variables”。
大多数这些程序变量也可以在服务器启动时使用相同的语法来指定程序选项。例如,mysql有一个max_allowed_packet
变量,控制其通信缓冲区的最大大小。要将max_allowed_packet
变量设置为16MB的值,可以使用以下命令之一:
mysql --max_allowed_packet=16777216
mysql --max_allowed_packet=16M
这两个命令都可以指定值的大小。变量可以使用K
、M
或G
后缀来指定大小的单位。例如,在设置max_allowed_packet
变量时,这些后缀表示KB、MB或GB。从MySQL 8.0.14开始,可以使用T
、P
和E
后缀来指定大小的单位。后缀可以是大写或小写。
在选项文件中,变量设置不需要前导的减号:
[mysql]
max_allowed_packet=16777216
或:
[mysql]
max_allowed_packet=16M
如果你喜欢,可以在选项名称中使用下划线,表示减号。以下两个选项组是等效的。两个设置都将服务器的密钥缓冲区大小设置为512MB:
[mysqld]
key_buffer_size=512M
[mysqld]
key-buffer-size=512M
可以在程序启动时使用后缀指定值的乘数,但不能在设置变量时使用。反之,在使用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;