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;