MySQL 9.0 發行說明
許多 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
第一個命令以位元組指定值。第二個命令以 MB 指定值。對於採用數值的變數,值可以加上 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;