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
第一個命令以位元組指定值。第二個命令以 MB 指定值。對於採用數值的變數,可以使用 K
、M
或 G
的後綴來表示 1024、10242 或 10243 的乘數。(例如,當用於設定 max_allowed_packet
時,後綴表示千位元組、MB 或 GB 的單位。)從 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;