MySQL 8.4 发布说明
许多 MySQL 程序都有内部变量,这些变量可以在运行时使用 SET
语句设置。请参阅 第 15.7.6.1 节,“SET 语法用于变量赋值” 和 第 7.1.9 节,“使用系统变量”。
大多数这些程序变量也可以在服务器启动时设置,使用与指定程序选项相同的语法。例如,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;