暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

4.2.2.5使用选项设置程序变量

原创 由迪 2020-11-09
371

许多MySQL程序都有内部变量,可以在运行时使用该 SET 语句设置。请参见第13.7.6.1节“变量分配的SET语法”第5.1.9节“使用系统变量”

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

mysql --max_allowed_packet=16777216
mysql --max_allowed_packet=16M
复制

第一个命令以字节为单位指定值。第二个以兆字节为单位指定值。对于采用数字值的变量,该值可以与一个后缀被给予 KM或者 G以指示1024一乘法器,1024 2或1024 3。(例如,用于设置时 max_allowed_packet,后缀表示以千字节,兆字节或千兆字节为单位)。如MySQL的8.0.14的,后缀也可以是TPE以指示1024乘法器4,1024 5或1024 6。后缀字母可以是大写或小写。

在选项文件中,变量设置不带前导破折号:

[mysql] max_allowed_packet=16777216
复制

要么:

[mysql] max_allowed_packet=16M
复制

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

[mysqld] key_buffer_size=512M [mysqld] key-buffer-size=512M
复制

可以通过完整或任何明确的前缀将其写入来指定变量。例如,该 max_allowed_packet变量可以被设置 的MySQL--max_a,但不作为 --max,因为后者是不明确的:

shell> mysql --max=1000000
mysql: ambiguous option '--max=1000000' (max_allowed_packet, max_join_size)
复制

请注意,在为程序实现新变量的情况下,使用变量前缀可能会导致问题。现在明确的前缀将来可能会变得不明确。

在程序调用时设置变量时可以使用指定值乘数的后缀,但不能SET在运行时使用来设置值 。另一方面,通过使用 SET,您可以使用表达式分配变量的值,而在服务器启动时设置变量时则不正确。例如,以下第一行在程序调用时是合法的,但第二行不是:

shell> mysql --max_allowed_packet=16M
shell> mysql --max_allowed_packet=16*1024*1024
复制

相反,以下第二行在运行时合法,但第一行则不合法:

mysql> SET GLOBAL max_allowed_packet=16M; mysql> SET GLOBAL max_allowed_packet=16*1024*1024;
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论