MySQL 伺服器維護許多影響其運作的系統變數。大多數系統變數可以使用命令列上的選項或選項檔案在伺服器啟動時設定。它們中的大多數可以使用 SET
陳述式在執行階段動態變更,這使您可以在不必停止並重新啟動伺服器的情況下修改伺服器的運作。有些變數是唯讀的,它們的值由系統環境、MySQL 在系統上的安裝方式,或可能由用於編譯 MySQL 的選項決定。大多數系統變數都有預設值,但也有例外,包括唯讀變數。您也可以在運算式中使用系統變數值。
設定全域系統變數執行階段值通常需要 SYSTEM_VARIABLES_ADMIN
權限(或已棄用的 SUPER
權限)。設定工作階段系統執行階段值通常不需要特殊權限,任何使用者都可以執行,但也有例外。如需更多資訊,請參閱第 7.1.9.1 節,「系統變數權限」
有幾種方法可以查看系統變數的名稱和值
若要查看伺服器根據其編譯的預設值和它讀取的所有選項檔案使用的值,請使用此命令
mysqld --verbose --help
若要僅查看伺服器根據其編譯的預設值使用的值,忽略任何選項檔案中的設定,請使用此命令
mysqld --no-defaults --verbose --help
若要查看執行中伺服器使用的目前值,請使用
SHOW VARIABLES
陳述式或 Performance Schema 系統變數表格。請參閱第 29.12.14 節,「Performance Schema 系統變數表格」。
本節提供每個系統變數的說明。如需系統變數摘要表格,請參閱第 7.1.5 節,「伺服器系統變數參考」。如需更多關於操縱系統變數的資訊,請參閱第 7.1.9 節,「使用系統變數」。
如需其他系統變數資訊,請參閱以下章節
第 7.1.9 節,「使用系統變數」,討論了設定和顯示系統變數值的語法。
第 7.1.9.2 節,「動態系統變數」,列出了可以在執行階段設定的變數。
有關調整系統變數的資訊,請參閱第 7.1.1 節,「設定伺服器」。
第 17.14 節,「InnoDB 啟動選項和系統變數」,列出了
InnoDB
系統變數。第 25.4.3.9.2 節,「NDB 集群系統變數」列出了 NDB 集群特定的系統變數。
關於複製特定的伺服器系統變數資訊,請參閱第 19.1.6 節,「複製和二進制日誌選項與變數」。
以下某些變數描述會提到「啟用」或「停用」變數。這些變數可以使用 SET
陳述式將其設定為 ON
或 1
來啟用,或設定為 OFF
或 0
來停用。布林變數可以在啟動時設定為值 ON
、TRUE
、OFF
和 FALSE
(不區分大小寫),以及 1
和 0
。請參閱第 6.2.2.4 節,「程式選項修飾詞」。
某些系統變數控制緩衝區或快取的大小。對於給定的緩衝區,伺服器可能需要配置內部資料結構。這些結構通常從配置給緩衝區的總記憶體中配置,並且所需空間量可能與平台相關。這表示當您為控制緩衝區大小的系統變數指派值時,實際可用的空間量可能與指派的值不同。在某些情況下,該數量可能小於指派的值。伺服器也可能向上調整值。例如,如果您將值 0 指派給最小值為 1024 的變數,則伺服器會將該值設定為 1024。
除非另有指定,否則緩衝區大小、長度和堆疊大小的值以位元組為單位給定。
某些系統變數描述包括區塊大小,在這種情況下,在伺服器儲存之前,不是所述區塊大小的整數倍數的值會向下捨入為區塊大小的下一個較小的倍數,即 FLOOR(
value
)*
。block_size
範例:假設給定變數的區塊大小為 4096,並且您將變數的值設定為 100000 (我們假設變數的最大值大於此數字)。由於 100000 / 4096 = 24.4140625,因此伺服器會在儲存之前自動將值降低為 98304 (24 * 4096)。
在某些情況下,變數的所述最大值是 MySQL 解析器允許的最大值,但不是區塊大小的確切倍數。在這種情況下,有效的最大值是區塊大小的下一個較小倍數。
範例:系統變數的最大值顯示為 4294967295 (232-1),其區塊大小為 1024。4294967295 / 1024 = 4194303.9990234375,因此如果您將此變數設定為所述最大值,則實際儲存的值為 4194303 * 1024 = 4294966272。
某些系統變數會採用檔案名稱值。除非另有指定,否則如果該值是相對路徑名稱,則預設檔案位置是資料目錄。若要明確指定位置,請使用絕對路徑名稱。假設資料目錄為 /var/mysql/data
。如果檔案值變數給定為相對路徑名稱,則它位於 /var/mysql/data
下方。如果該值是絕對路徑名稱,則其位置如路徑名稱所示。
-
命令列格式 --activate-all-roles-on-login[={OFF|ON}]
系統變數 activate_all_roles_on_login
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否在使用者登入伺服器時啟用自動啟動所有已授與的角色
如果啟用
activate_all_roles_on_login
,伺服器會在登入時啟動每個帳戶的所有已授與角色。這會優先於使用SET DEFAULT ROLE
指定的預設角色。如果停用
activate_all_roles_on_login
,伺服器會在登入時啟動使用SET DEFAULT ROLE
指定的預設角色 (如果有的話)。
已授與的角色包括明確授與使用者的角色和在
mandatory_roles
系統變數值中命名的角色。activate_all_roles_on_login
僅在登入時,以及在以定義者內容執行的預存程式和檢視的執行開始時適用。若要變更工作階段中的作用中角色,請使用SET ROLE
。若要變更預存程式的作用中角色,程式主體應執行SET ROLE
。 -
命令列格式 --admin-address=addr
系統變數 admin_address
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 要在管理網路介面上接聽 TCP/IP 連線的 IP 位址 (請參閱第 7.1.12.1 節,「連線介面」)。沒有預設的
admin_address
值。如果未在啟動時指定此變數,伺服器將不會維護任何管理介面。伺服器也有一個bind_address
系統變數,用於設定一般 (非管理) 用戶端 TCP/IP 連線。請參閱第 7.1.12.1 節,「連線介面」。如果指定
admin_address
,則其值必須符合這些要求該值必須是單一 IPv4 位址、IPv6 位址或主機名稱。
該值無法指定萬用字元位址格式 (
*
、0.0.0.0
或::
)。該值可能包含網路命名空間指定符。
IP 位址可以指定為 IPv4 或 IPv6 位址。如果該值是主機名稱,伺服器會將該名稱解析為 IP 位址並繫結至該位址。如果主機名稱解析為多個 IP 位址,伺服器會使用第一個 IPv4 位址 (如果有),否則會使用第一個 IPv6 位址。
伺服器會如下處理不同類型的位址
如果位址是 IPv4 對應位址,伺服器會接受該位址的 TCP/IP 連線,無論是 IPv4 或 IPv6 格式。例如,如果伺服器繫結至
::ffff:127.0.0.1
,用戶端可以使用--host=127.0.0.1
或--host=::ffff:127.0.0.1
連線。如果位址是「一般」IPv4 或 IPv6 位址 (例如
127.0.0.1
或::1
),伺服器僅接受該 IPv4 或 IPv6 位址的 TCP/IP 連線。
這些規則適用於指定位址的網路命名空間
可以為 IP 位址或主機名稱指定網路命名空間。
無法為萬用字元 IP 位址指定網路命名空間。
對於給定的位址,網路命名空間是選用的。如果給定,則必須將其指定為緊接在位址之後的
/
後綴。ns
沒有
/
後綴的位址會使用主機系統全域命名空間。因此,全域命名空間是預設值。ns
具有
/
後綴的位址會使用名為ns
ns
的命名空間。主機系統必須支援網路命名空間,並且必須事先設定每個命名的命名空間。命名不存在的命名空間會產生錯誤。
如需有關網路命名空間的其他資訊,請參閱第 7.1.14 節,「網路命名空間支援」。
如果繫結至位址失敗,伺服器會產生錯誤且不會啟動。
admin_address
系統變數類似於將伺服器繫結至一般用戶端連線位址的bind_address
系統變數,但有以下差異bind_address
允許使用多個位址。admin_address
允許使用單一位址。bind_address
允許使用萬用字元位址。admin_address
不允許。
-
命令列格式 --admin-port=port_num
系統變數 admin_port
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 33062
最小值 0
最大值 65535
要在管理網路介面上用於連線的 TCP/IP 連接埠號碼 (請參閱第 7.1.12.1 節,「連線介面」)。將此變數設定為 0 會導致使用預設值。
如果未指定
admin_address
,則設定admin_port
無效,因為在這種情況下,伺服器不會維護任何管理網路介面。 -
命令列格式 --admin-ssl-ca=file_name
系統變數 admin_ssl_ca
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
admin_ssl_ca
系統變數類似於ssl_ca
,但它適用於管理連線介面,而不是主連線介面。如需設定管理介面加密支援的相關資訊,請參閱管理介面加密連線支援。 -
命令列格式 --admin-ssl-capath=dir_name
系統變數 admin_ssl_capath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
admin_ssl_capath
系統變數類似於ssl_capath
,但它適用於管理連線介面,而不是主連線介面。如需設定管理介面加密支援的相關資訊,請參閱管理介面加密連線支援。 -
命令列格式 --admin-ssl-cert=file_name
系統變數 admin_ssl_cert
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
admin_ssl_cert
系統變數與ssl_cert
類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。 -
命令列格式 --admin-ssl-cipher=name
系統變數 admin_ssl_cipher
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
admin_ssl_cipher
系統變數與ssl_cipher
類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。此變數指定的清單可能包含以下任何值
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES256-CCM
ECDHE-ECDSA-AES128-CCM
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES256-CCM
DHE-RSA-AES128-CCM
DHE-RSA-CHACHA20-POLY1305
當設定此變數時,嘗試包含未在此處顯示的任何密碼清單中的值會引發錯誤 (
ER_BLOCKED_CIPHER
)。 -
命令列格式 --admin-ssl-crl=file_name
系統變數 admin_ssl_crl
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
admin_ssl_crl
系統變數與ssl_crl
類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。 -
命令列格式 --admin-ssl-crlpath=dir_name
系統變數 admin_ssl_crlpath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
admin_ssl_crlpath
系統變數與ssl_crlpath
類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。 -
命令列格式 --admin-ssl-key=file_name
系統變數 admin_ssl_key
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
admin_ssl_key
系統變數與ssl_key
類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。 -
命令列格式 --admin-tls-ciphersuites=ciphersuite_list
系統變數 admin_tls_ciphersuites
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
admin_tls_ciphersuites
系統變數與tls_ciphersuites
類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。該值是零個或多個以冒號分隔的密碼套件名稱清單,這些名稱來自此處列出的名稱
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
當設定此變數時,嘗試包含未在此處顯示的任何密碼清單中的值會引發錯誤 (
ER_BLOCKED_CIPHER
)。 -
命令列格式 --admin-tls-version=protocol_list
系統變數 admin_tls_version
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 TLSv1.2,TLSv1.3
admin_tls_version
系統變數與tls_version
類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。重要MySQL 8.4 不支援 TLSv1 和 TLSv1.1 連線協定。有關更多資訊,請參閱移除對 TLSv1 和 TLSv1.1 協定的支援。
如果 MySQL 伺服器是使用 OpenSSL 1.1.1 或更新版本編譯的,則 MuySQL 8.4 支援 TLSv1.3 協定。伺服器會在啟動時檢查 OpenSSL 的版本,如果版本低於 1.1.1,則會從系統變數的預設值中移除 TLSv1.3。在這種情況下,預設值為
TLSv1.2
。
-
命令列格式 --authentication-policy=value
系統變數 authentication_policy
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 *,,
此變數用於管理多因素驗證 (MFA) 功能。它適用於
CREATE USER
和ALTER USER
陳述式的驗證因素相關子句,這些陳述式用於管理 MySQL 帳戶定義,其中「因素」對應於與帳戶關聯的驗證方法或外掛程式authentication_policy
控制帳戶可能擁有的驗證因素數量。也就是說,它控制哪些因素是必需的或允許的。authentication_policy
也控制每個因素允許哪些外掛程式(或方法)。authentication_policy
決定未明確命名外掛程式的驗證規範的預設驗證外掛程式。
因為
authentication_policy
僅在建立或變更帳戶時適用,因此變更其值對現有使用者帳戶沒有影響。注意雖然
authentication_policy
系統變數對CREATE USER
和ALTER USER
陳述式的驗證相關子句設定了某些限制,但具有AUTHENTICATION_POLICY_ADMIN
權限的使用者不受這些限制的約束。(對於其他情況下不允許的陳述式,會出現警告。)authentication_policy
的值是以逗號分隔的 1 個、2 個或 3 個元素的清單。每個存在的元素都可以是驗證外掛程式名稱、星號 (*
)、空白或遺失。(例外:元素 1 不能為空白或遺失。)在所有情況下,元素可以用空白字元括起來,整個清單用單引號括起來。為清單中的元素
N
指定的值類型會影響因素N
是否必須出現在帳戶定義中,以及可以使用哪些驗證外掛程式如果元素
N
是驗證外掛程式名稱,則因素N
的驗證方法是必需的,並且必須使用命名的外掛程式。此外,該外掛程式成為因素
N
的預設外掛程式,適用於未明確命名外掛程式的驗證方法。有關詳細資訊,請參閱預設驗證外掛程式。使用內部憑證儲存的驗證外掛程式只能指定給第一個元素,而且不能重複。例如,不允許以下設定
authentication_policy = 'caching_sha2_password, sha256_password'
authentication_policy = 'caching_sha2_password, authentication_webauthn, sha256_password'
如果元素
N
是星號 (*
),則因素N
的驗證方法是必需的。它可以使用任何對元素N
有效的驗證外掛程式(如下所述)。如果元素
N
為空白,則因素N
的驗證方法是可選的。如果給定,它可以使用任何對元素N
有效的驗證外掛程式(如下所述)。如果清單中遺失元素
N
(也就是說,值中的逗號少於N
−1 個),則禁止使用因素N
的驗證方法。例如,值為'*'
僅允許單一因素,因此強制對使用CREATE USER
建立的新帳戶或使用ALTER USER
變更的現有帳戶實施單因素驗證 (1FA)。在這種情況下,這些陳述式不能指定因素 2 或 3 的驗證。
當
authentication_policy
元素命名驗證外掛程式時,元素的允許外掛程式名稱受以下條件約束元素 1 必須命名不需要註冊步驟的外掛程式。例如,不能命名
authentication_webauthn
。元素 2 和 3 必須命名不使用內部憑證儲存的外掛程式。
有關哪些驗證外掛程式使用內部憑證儲存的資訊,請參閱第 8.2.15 節「密碼管理」。
當
authentication_policy
元素N
為*
時,帳戶定義中因素N
的允許外掛程式名稱受以下條件約束對於因素 1,帳戶定義可以使用任何外掛程式。預設驗證外掛程式規則適用於未命名外掛程式的驗證規範。請參閱預設驗證外掛程式。
對於因數 2 和 3,帳戶定義不能命名使用內部憑證儲存的插件。例如,使用 '
*,*
'、'*,*,*
'、'*,
'、'*,,
'authentication_policy
設定,使用內部憑證儲存的插件僅允許用於第一個因數,且不能重複。
當
authentication_policy
元素N
為空時,帳戶定義中因數N
允許的插件名稱受限於以下條件:對於因數 1,此條件不適用,因為元素 1 不能為空。
對於因數 2 和 3,帳戶定義不能命名使用內部憑證儲存的插件。
空的元素必須出現在列表的末尾,緊接著非空元素。換句話說,第一個元素不能為空,且要嘛沒有任何元素為空,要嘛最後一個元素為空,要嘛最後兩個元素為空。例如,值
',,'
不允許,因為它會表示所有因數都是可選的。這是不允許的;帳戶必須至少有一個驗證因數。authentication_policy
的預設值為'*,,'
。這表示在帳戶定義中因數 1 為必要,且可以使用任何驗證插件,而因數 2 和 3 為可選,且每個可以使用任何不使用內部憑證儲存的驗證插件。下表顯示一些
authentication_policy
值,以及每個值為建立或變更帳戶所建立的策略。表 7.4:authentication_policy 值的範例
authentication_policy 值 生效策略 '*'
僅允許建立或變更具有一個因數的帳戶。 '*,*'
僅允許建立或變更具有兩個因數的帳戶。 '*,*,*'
僅允許建立或變更具有三個因數的帳戶。 '*,'
允許建立或變更具有一個或兩個因數的帳戶。 '*,,'
允許建立或變更具有一個、兩個或三個因數的帳戶。 '*,*,'
允許建立或變更具有兩個或三個因數的帳戶。 '*,
auth_plugin
'允許建立或變更具有兩個因數的帳戶,其中第一個因數可以是任何驗證方法,而第二個因數必須是指定的插件。 '
auth_plugin
,*,'允許建立或變更具有兩個或三個因數的帳戶,其中第一個因數必須是指定的插件。 '
auth_plugin
,'允許建立或變更具有一個或兩個因數的帳戶,其中第一個因數必須是指定的插件。 '
auth_plugin
,auth_plugin
,auth_plugin
'允許建立或變更具有三個因數的帳戶,其中這些因數必須使用指定的插件。 authentication_windows_log_level
命令列格式 --authentication-windows-log-level=#
系統變數 authentication_windows_log_level
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 0
最大值 4
只有在啟用
authentication_windows
Windows 驗證插件並啟用偵錯程式碼時,此變數才可用。請參閱第 8.4.1.6 節,「Windows 可插入驗證」。此變數設定 Windows 驗證插件的記錄層級。下表顯示允許的值。
值 說明 0 不記錄 1 僅記錄錯誤訊息 2 記錄層級 1 訊息和警告訊息 3 記錄層級 2 訊息和資訊註解 4 記錄層級 3 訊息和偵錯訊息 authentication_windows_use_principal_name
命令列格式 --authentication-windows-use-principal-name[={OFF|ON}]
系統變數 authentication_windows_use_principal_name
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
只有在啟用
authentication_windows
Windows 驗證插件時,此變數才可用。請參閱第 8.4.1.6 節,「Windows 可插入驗證」。使用
InitSecurityContext()
函式進行驗證的用戶端應提供一個字串,以識別其連線的服務 (targetName
)。MySQL 使用執行伺服器的帳戶主體名稱 (UPN)。UPN 的格式為
,且不需要在任何地方註冊即可使用。此 UPN 會由伺服器在驗證交握開始時傳送。user_id
@computer_name
此變數控制伺服器是否在初始質詢中傳送 UPN。依預設,此變數為啟用。基於安全性考量,可以停用此變數,以避免以明文方式將伺服器的帳戶名稱傳送給用戶端。如果停用此變數,伺服器一律會在第一個質詢中傳送
0x00
位元組,用戶端不會指定targetName
,因此會使用 NTLM 驗證。如果伺服器無法取得其 UPN (這主要發生在不支援 Kerberos 驗證的環境中),則伺服器不會傳送 UPN,且會使用 NTLM 驗證。
-
命令列格式 --autocommit[={OFF|ON}]
系統變數 autocommit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
自動提交模式。如果設定為 1,對表格的所有變更會立即生效。如果設定為 0,您必須使用
COMMIT
來接受交易,或使用ROLLBACK
來取消交易。如果autocommit
為 0 且您將其變更為 1,MySQL 會自動COMMIT
任何開啟的交易。開始交易的另一種方式是使用START TRANSACTION
或BEGIN
陳述式。請參閱第 15.3.1 節,「START TRANSACTION、COMMIT 和 ROLLBACK 陳述式」。依預設,用戶端連線會以
autocommit
設定為 1 開始。若要使用戶端以預設值 0 開始,請使用--autocommit=0
選項啟動伺服器,設定全域autocommit
值。若要使用選項檔設定變數,請包含下列幾行:[mysqld] autocommit=0
-
命令列格式 --automatic-sp-privileges[={OFF|ON}]
系統變數 automatic_sp_privileges
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
當此變數的值為 1 (預設值) 時,如果使用者還無法執行和變更或捨棄常式,伺服器會自動將
EXECUTE
和ALTER ROUTINE
權限授與儲存常式的建立者。(捨棄常式需要ALTER ROUTINE
權限。)當常式捨棄時,伺服器也會自動從建立者中捨棄這些權限。如果automatic_sp_privileges
為 0,則伺服器不會自動新增或捨棄這些權限。常式的建立者是執行該常式的
CREATE
陳述式的帳戶。這可能與常式定義中指定為DEFINER
的帳戶不同。如果您使用
--skip-new
啟動 mysqld,automatic_sp_privileges
會設定為OFF
。 -
命令列格式 --auto-generate-certs[={OFF|ON}]
系統變數 auto_generate_certs
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
此變數控制伺服器是否在資料目錄中自動產生 SSL 金鑰和憑證檔案 (如果它們尚不存在)。
在啟動時,如果啟用
auto_generate_certs
系統變數,且資料目錄中缺少伺服器端 SSL 檔案,則伺服器會在資料目錄中自動產生伺服器端和用戶端 SSL 憑證和金鑰檔案。在這些情況下,無論任何其他 TLS 選項的值為何,一律會產生這些憑證。憑證和金鑰檔案可使用 SSL 啟用安全的用戶端連線;請參閱第 8.3.1 節,「設定 MySQL 以使用加密連線」。如需 SSL 檔案自動產生 (包括檔案名稱和特性) 的詳細資訊,請參閱第 8.3.3.1 節,「使用 MySQL 建立 SSL 和 RSA 憑證和金鑰」
sha256_password_auto_generate_rsa_keys
和caching_sha2_password_auto_generate_rsa_keys
系統變數是相關的,但會控制透過未加密連線使用 RSA 安全交換密碼所需的 RSA 金鑰配對檔案的自動產生。 -
命令列格式 --back-log=#
系統變數 back_log
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 1
最大值 65535
MySQL 可以擁有的未完成連線要求的數目。當主要 MySQL 執行緒在很短的時間內收到大量連線要求時,就會發揮作用。然後,主要執行緒需要一些時間 (雖然非常短) 來檢查連線並啟動新的執行緒。
back_log
值會指出在 MySQL 暫時停止回覆新要求之前,在這段短時間內可以堆疊多少要求。只有在您預期在短時間內有大量連線時,才需要增加此值。換句話說,此值是傳入 TCP/IP 連線的接聽佇列的大小。您的作業系統對此佇列的大小有其限制。《Unix
listen()
系統呼叫》的使用手冊頁面應有更多詳細資訊。請檢查您的作業系統文件,以取得此變數的最大值。back_log
的設定值不能高於您的作業系統限制。預設值為
max_connections
的值,可讓允許的待辦項目調整為允許的最大連線數。 -
MySQL 安裝基礎目錄的路徑。
-
命令列格式 --big-tables[={OFF|ON}]
系統變數 big_tables
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果啟用,伺服器會將所有暫存表格儲存在磁碟上,而不是記憶體中。這會防止大多數需要大型暫存表格的
SELECT
作業發生表格
錯誤,但也會減慢記憶體表格足以應付的查詢速度。tbl_name
已滿新連線的預設值為
OFF
(使用記憶體中的暫存表)。正常情況下,永遠不應該啟用此變數。當記憶體中的內部暫存表由TempTable
儲存引擎(預設)管理,且TempTable
儲存引擎可佔用的最大記憶體量超出時,TempTable
儲存引擎會開始將資料儲存到磁碟上的暫存檔案。當記憶體中的暫存表由MEMORY
儲存引擎管理時,記憶體中的表會根據需要自動轉換為基於磁碟的表。如需更多資訊,請參閱第 10.4.4 節「MySQL 中內部暫存表的使用」。 -
命令列格式 --bind-address=addr
系統變數 bind_address
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 *
MySQL 伺服器會監聽一個或多個網路通訊端以接收 TCP/IP 連線。每個通訊端都會綁定到一個位址,但一個位址有可能對應到多個網路介面。若要指定伺服器應如何監聽 TCP/IP 連線,請在伺服器啟動時設定
bind_address
系統變數。伺服器還有一個admin_address
系統變數,可在專用介面上啟用管理連線。請參閱第 7.1.12.1 節「連線介面」。如果指定了
bind_address
,則它會接受一個或多個位址值的清單,每個位址值可以指定單一的非萬用字元 IP 位址或主機名稱。每個位址可以包含網路命名空間指定符。如果只指定一個位址,它可以使用允許監聽多個網路介面的其中一種萬用字元位址格式(*
、0.0.0.0
或::
)。多個位址以逗號分隔。當列出多個值時,每個值必須指定單一的非萬用字元 IP 位址(IPv4 或 IPv6)或主機名稱,且不允許使用萬用字元位址格式(*
、0.0.0.0
或::
)。IP 位址可以指定為 IPv4 或 IPv6 位址。對於任何作為主機名稱的值,伺服器會將名稱解析為 IP 位址並綁定到該位址。如果主機名稱解析為多個 IP 位址,則伺服器會使用第一個 IPv4 位址(如果有的話),否則會使用第一個 IPv6 位址。
伺服器會如下處理不同類型的位址
如果位址是
*
,則伺服器會接受所有伺服器主機 IPv4 介面上的 TCP/IP 連線,如果伺服器主機支援 IPv6,則會接受所有 IPv6 介面上的 TCP/IP 連線。使用此位址可允許在所有伺服器介面上建立 IPv4 和 IPv6 連線。此值為預設值。如果變數指定多個值的清單,則不允許此值。如果位址是
0.0.0.0
,則伺服器會接受所有伺服器主機 IPv4 介面上的 TCP/IP 連線。如果變數指定多個值的清單,則不允許此值。如果位址是
::
,則伺服器會接受所有伺服器主機 IPv4 和 IPv6 介面上的 TCP/IP 連線。如果變數指定多個值的清單,則不允許此值。如果位址是 IPv4 對應位址,伺服器會接受該位址的 TCP/IP 連線,無論是 IPv4 或 IPv6 格式。例如,如果伺服器繫結至
::ffff:127.0.0.1
,用戶端可以使用--host=127.0.0.1
或--host=::ffff:127.0.0.1
連線。如果位址是「一般」IPv4 或 IPv6 位址 (例如
127.0.0.1
或::1
),伺服器僅接受該 IPv4 或 IPv6 位址的 TCP/IP 連線。
這些規則適用於指定位址的網路命名空間
可以為 IP 位址或主機名稱指定網路命名空間。
無法為萬用字元 IP 位址指定網路命名空間。
對於給定的位址,網路命名空間是選用的。如果給定,則必須將其指定為緊接在位址之後的
/
後綴。ns
沒有
/
後綴的位址會使用主機系統全域命名空間。因此,全域命名空間是預設值。ns
具有
/
後綴的位址會使用名為ns
ns
的命名空間。主機系統必須支援網路命名空間,並且必須事先設定每個命名的命名空間。命名不存在的命名空間會產生錯誤。
如果變數值指定多個位址,則它可以包含全域命名空間、具名命名空間或兩者的混合中的位址。
如需有關網路命名空間的其他資訊,請參閱第 7.1.14 節,「網路命名空間支援」。
如果綁定到任何位址失敗,伺服器會產生錯誤且不會啟動。
範例
bind_address=*
伺服器會監聽
*
萬用字元指定的任何 IPv4 或 IPv6 位址。bind_address=198.51.100.20
伺服器只會監聽
198.51.100.20
IPv4 位址。bind_address=198.51.100.20,2001:db8:0:f101::1
伺服器會監聽
198.51.100.20
IPv4 位址和2001:db8:0:f101::1
IPv6 位址。bind_address=198.51.100.20,*
這會產生錯誤,因為當
bind_address
命名多個值的清單時,不允許使用萬用字元位址。bind_address=198.51.100.20/red,2001:db8:0:f101::1/blue,192.0.2.50
伺服器會監聽
red
命名空間中的198.51.100.20
IPv4 位址、blue
命名空間中的2001:db8:0:f101::1
IPv6 位址和全域命名空間中的192.0.2.50
IPv4 位址。
當
bind_address
命名單一值(萬用字元或非萬用字元)時,伺服器會監聽單一通訊端,對於萬用字元位址,該通訊端可能會綁定到多個網路介面。當bind_address
命名多個值的清單時,伺服器會監聽每個值一個通訊端,每個通訊端綁定到單一網路介面。通訊端數量與指定的值數量呈線性關係。根據作業系統接受連線的效率,冗長的值清單可能會對接受 TCP/IP 連線造成效能上的影響。由於檔案描述元會配置給監聽通訊端和網路命名空間檔案,因此可能需要增加
open_files_limit
系統變數。如果您打算將伺服器綁定到特定位址,請確保
mysql.user
系統資料表中包含一個具有管理權限的帳戶,您可以使用該帳戶連線到該位址。否則,您將無法關閉伺服器。例如,如果您將伺服器綁定到*
,則可以使用所有現有帳戶連線到伺服器。但是,如果您將伺服器綁定到::1
,它只會接受該位址上的連線。在這種情況下,請先確保'root'@'::1'
帳戶存在於mysql.user
資料表中,以便您仍然可以連線到伺服器並將其關閉。 -
命令列格式 --block-encryption-mode=#
系統變數 block_encryption_mode
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 aes-128-ecb
此變數控制基於區塊的演算法(例如 AES)的區塊加密模式。它會影響
AES_ENCRYPT()
和AES_DECRYPT()
的加密。block_encryption_mode
採用aes-
格式的值,其中keylen
-mode
keylen
是金鑰長度(以位元為單位),mode
是加密模式。值不區分大小寫。允許的keylen
值為 128、192 和 256。允許的mode
值為ECB
、CBC
、CFB1
、CFB8
、CFB128
和OFB
。例如,此語句會導致 AES 加密函式使用 256 位元的金鑰長度和 CBC 模式
SET block_encryption_mode = 'aes-256-cbc';
如果嘗試將
block_encryption_mode
設定為包含不支援的金鑰長度或 SSL 程式庫不支援的模式的值,則會發生錯誤。 -
這是由連結器在 Linux 系統上使用
-DWITH_BUILD_ID=ON
(預設為啟用)編譯伺服器時產生的 160 位元SHA1
簽章,並轉換為十六進位字串。此唯讀值用作唯一的組建 ID,並在啟動時寫入伺服器記錄檔中。除了 Linux 以外的平台不支援
build_id
。 -
命令列格式 --bulk-insert-buffer-size=#
系統變數 bulk_insert_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 8388608
最小值 0
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
單位 位元組/執行緒 MyISAM
使用特殊的樹狀快取,使將資料新增到非空表時,INSERT ... SELECT
、INSERT ... VALUES (...), (...), ...
和LOAD DATA
的大量插入速度更快。此變數限制每個執行緒快取樹的大小(以位元組為單位)。將其設定為 0 會停用此最佳化。預設值為 8MB。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
caching_sha2_password_digest_rounds
命令列格式 --caching-sha2-password-digest-rounds=#
系統變數 caching_sha2_password_digest_rounds
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 5000
最小值 5000
最大值 4095000
caching_sha2_password
驗證外掛程式用於密碼儲存的雜湊回合數。將雜湊回合數增加到預設值以上會產生效能上的影響,這與增加的量成正比。
建立使用
caching_sha2_password
外掛程式的帳戶不會影響建立帳戶的用戶端會期,但伺服器必須執行雜湊回合才能完成操作。對於使用該帳戶的用戶端連線,伺服器必須執行雜湊回合並將結果儲存在快取中。第一次用戶端連線的登入時間會較長,但後續連線則不會。每次重新啟動伺服器後都會發生此行為。
caching_sha2_password_auto_generate_rsa_keys
命令列格式 --caching-sha2-password-auto-generate-rsa-keys[={OFF|ON}]
系統變數 caching_sha2_password_auto_generate_rsa_keys
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果資料目錄中尚不存在 RSA 私密/公用金鑰組檔案,伺服器會使用此變數來判斷是否要自動產生這些檔案。
啟動時,如果所有這些條件都為 true,伺服器會自動在資料目錄中產生 RSA 私密/公用金鑰組檔案:
sha256_password_auto_generate_rsa_keys
或caching_sha2_password_auto_generate_rsa_keys
系統變數已啟用;未指定任何 RSA 選項;資料目錄中缺少 RSA 檔案。這些金鑰組檔案可讓透過未加密連線,使用 RSA 安全地交換由sha256_password
(已棄用)或caching_sha2_password
外掛程式驗證的帳戶密碼;請參閱第 8.4.1.3 節「SHA-256 可插拔驗證」和第 8.4.1.2 節「快取 SHA-2 可插拔驗證」。如需有關 RSA 檔案自動產生的更多資訊(包括檔案名稱和特性),請參閱第 8.3.3.1 節「使用 MySQL 建立 SSL 和 RSA 憑證和金鑰」
auto_generate_certs
系統變數相關,但它控制使用 SSL 的安全連線所需的 SSL 憑證和金鑰檔案的自動產生。caching_sha2_password_private_key_path
命令列格式 --caching-sha2-password-private-key-path=file_name
系統變數 caching_sha2_password_private_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 private_key.pem
此變數指定用於
caching_sha2_password
驗證外掛程式的 RSA 私密金鑰檔的路徑名稱。如果檔案名稱為相對路徑,則會相對於伺服器資料目錄來解釋。檔案必須採用 PEM 格式。重要由於此檔案儲存私密金鑰,因此應限制其存取模式,使其只能由 MySQL 伺服器讀取。
有關
caching_sha2_password
的資訊,請參閱第 8.4.1.2 節,「快取 SHA-2 可插拔驗證」。caching_sha2_password_public_key_path
命令列格式 --caching-sha2-password-public-key-path=檔案名稱
系統變數 caching_sha2_password_public_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 public_key.pem
此變數指定用於
caching_sha2_password
驗證外掛程式的 RSA 公開金鑰檔的路徑名稱。如果檔案名稱為相對路徑,則會相對於伺服器資料目錄來解釋。檔案必須採用 PEM 格式。有關
caching_sha2_password
的資訊,包括用戶端如何請求 RSA 公開金鑰的資訊,請參閱第 8.4.1.2 節,「快取 SHA-2 可插拔驗證」。-
系統變數 character_set_client
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
來自用戶端的陳述式所使用的字元集。此變數的工作階段值是在用戶端連線至伺服器時,使用用戶端請求的字元集來設定。(許多用戶端支援
--default-character-set
選項,以允許明確指定此字元集。另請參閱第 12.4 節,「連線字元集和校對」。)當用戶端請求的值未知或不可用,或伺服器設定為忽略用戶端請求時,會使用此變數的全域值來設定工作階段值。當用戶端請求伺服器不知道的字元集時,可能會發生這種情況,例如,當啟用日語的用戶端連線到未設定sjis
支援的伺服器時,請求sjis
。某些字元集無法用作用戶端字元集。嘗試將它們用作
character_set_client
值會產生錯誤。請參閱不允許的用戶端字元集。 -
系統變數 character_set_connection
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
用於未指定字元集引導詞的常值和數字到字串轉換的字元集。有關引導詞的資訊,請參閱第 12.3.8 節,「字元集引導詞」。
-
系統變數 character_set_database
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
腳註 此選項是動態的,但應僅由伺服器設定。您不應手動設定此變數。 預設資料庫使用的字元集。每當預設資料庫變更時,伺服器都會設定此變數。如果沒有預設資料庫,則此變數的值與
character_set_server
相同。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
全域
character_set_database
和collation_database
系統變數已過時;預計會在未來版本的 MySQL 中移除它們。將值指派給工作階段
character_set_database
和collation_database
系統變數已過時,而且指派會產生警告。預計工作階段變數會在未來版本的 MySQL 中變為唯讀(且對它們的指派會產生錯誤),在該版本中,仍然可以存取工作階段變數以判斷預設資料庫的資料庫字元集和校對。 -
命令列格式 --character-set-filesystem=名稱
系統變數 character_set_filesystem
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 二進位
檔案系統字元集。此變數用於解釋參照檔案名稱的字串常值,例如在
LOAD DATA
和SELECT ... INTO OUTFILE
陳述式以及LOAD_FILE()
函數中。在嘗試開啟檔案之前,此類檔案名稱會從character_set_client
轉換為character_set_filesystem
。預設值為binary
,表示不會發生轉換。對於允許使用多位元組檔案名稱的系統,其他值可能更合適。例如,如果系統使用 UTF-8 表示檔案名稱,請將character_set_filesystem
設定為'utf8mb4'
。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
系統變數 character_set_results
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
用於將查詢結果返回給用戶端的字元集。這包括結果資料 (例如資料行值)、結果中繼資料 (例如資料行名稱) 和錯誤訊息。
-
命令列格式 --character-set-server=名稱
系統變數 character_set_server
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
伺服器的預設字元集。請參閱第 12.15 節,「字元集組態」。如果您設定此變數,則還應設定
collation_server
以指定字元集的校對。 -
系統變數 character_set_system
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 utf8mb3
伺服器用於儲存識別碼的字元集。值永遠為
utf8mb3
。 -
命令列格式 --character-sets-dir=目錄名稱
系統變數 character_sets_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 安裝字元集的目錄。請參閱第 12.15 節,「字元集組態」。
-
命令列格式 --check-proxy-users[={OFF|ON}]
系統變數 check_proxy_users
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
某些驗證外掛程式會自行實作用戶端代理使用者對應 (例如,PAM 和 Windows 驗證外掛程式)。其他驗證外掛程式預設不支援代理使用者。在這些外掛程式中,有些可以請求 MySQL 伺服器本身根據授權的代理權限對應代理使用者:
mysql_native_password
(已過時)、sha256_password
(已過時)。如果啟用
check_proxy_users
系統變數,則伺服器會為發出此類請求的任何驗證外掛程式執行代理使用者對應。但是,可能還需要啟用外掛程式特定的系統變數,才能利用伺服器代理使用者對應支援。對於已過時的
mysql_native_password
外掛程式 (已過時),請啟用mysql_native_password_proxy_users
。對於
sha256_password
外掛程式 (已過時),請啟用sha256_password_proxy_users
。
有關使用者代理的資訊,請參閱第 8.2.19 節,「代理使用者」。
-
系統變數 collation_connection
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 連線字元集的校對。
collation_connection
對於常值字串的比較很重要。對於字串與資料行值的比較,collation_connection
無關緊要,因為資料行有自己的校對,其校對優先順序較高 (請參閱第 12.8.4 節,「表示式中的校對強制轉換」)。使用使用者定義的校對名稱作為此變數會引發警告。
-
系統變數 collation_database
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4_0900_ai_ci
腳註 此選項是動態的,但應僅由伺服器設定。您不應手動設定此變數。 預設資料庫使用的校對。每當預設資料庫變更時,伺服器都會設定此變數。如果沒有預設資料庫,則此變數的值與
collation_server
相同。全域
character_set_database
和collation_database
系統變數已過時;預計會在未來版本的 MySQL 中移除它們。將值指派給工作階段
character_set_database
和collation_database
系統變數已過時,而且指派會產生警告。預計工作階段變數會在未來版本的 MySQL 中變為唯讀 (且指派會產生錯誤),在該版本中,仍然可以存取工作階段變數以判斷預設資料庫的資料庫字元集和校對。使用使用者定義的校對名稱作為
collation_database
會引發警告。 -
命令列格式 --collation-server=名稱
系統變數 collation_server
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4_0900_ai_ci
伺服器的預設校對。請參閱第 12.15 節,「字元集設定」。
將此設定為使用者定義校對的名稱會引發警告。
-
命令列格式 --completion-type=#
系統變數 completion_type
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 NO_CHAIN
有效值 NO_CHAIN
CHAIN
RELEASE
0
1
2
交易完成類型。此變數可接受下表顯示的值。可以使用名稱值或對應的整數值來指定變數。
值 說明 NO_CHAIN
(或 0)COMMIT
和ROLLBACK
不受影響。這是預設值。CHAIN
(或 1)COMMIT
和ROLLBACK
分別等同於COMMIT AND CHAIN
和ROLLBACK AND CHAIN
。(新的交易會立即開始,其隔離層級與剛終止的交易相同。)RELEASE
(或 2)COMMIT
和ROLLBACK
分別等同於COMMIT RELEASE
和ROLLBACK RELEASE
。(伺服器會在終止交易後中斷連線。)completion_type
會影響以START TRANSACTION
或BEGIN
開始,並以COMMIT
或ROLLBACK
結束的交易。它不適用於執行第 15.3.3 節,「造成隱含 COMMIT 的陳述式」中列出的陳述式所造成的隱含提交。它也不適用於XA COMMIT
、XA ROLLBACK
或當autocommit=1
時。 -
命令列格式 --component-scheduler.enabled[=value]
系統變數 component_scheduler.enabled
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
在啟動時設定為
OFF
時,背景執行緒不會啟動。仍然可以排程工作,但在啟用component_scheduler
之前,它們不會執行。在啟動時設定為ON
時,元件會完全運作。也可以動態設定值以取得下列效果
ON
會啟動背景執行緒,該執行緒會立即開始服務佇列。OFF
會發出背景執行緒終止的訊號,該執行緒會等待其結束。背景執行緒會在存取佇列以檢查是否有要執行的工作之前,檢查終止旗標。
-
命令列格式 --concurrent-insert[=value]
系統變數 concurrent_insert
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 AUTO
有效值 NEVER
AUTO
ALWAYS
0
1
2
如果
AUTO
(預設值),MySQL 允許INSERT
和SELECT
陳述式對資料檔案中間沒有可用區塊的MyISAM
表格同時執行。此變數可接受下表顯示的值。可以使用名稱值或對應的整數值來指定變數。
值 說明 NEVER
(或 0)停用並行插入 AUTO
(或 1)(預設) 為沒有孔洞的 MyISAM
表格啟用並行插入ALWAYS
(或 2)為所有 MyISAM
表格啟用並行插入,即使是那些有孔洞的表格也一樣。對於有孔洞的表格,如果它正在被另一個執行緒使用,則新列會插入到表格的末尾。否則,MySQL 會取得正常的寫入鎖定,並將列插入到孔洞中。如果您使用
--skip-new
啟動 mysqld,則concurrent_insert
會設定為NEVER
。另請參閱第 10.11.3 節,「並行插入」。
-
命令列格式 --connect-timeout=#
系統變數 connect_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 2
最大值 31536000
單位 秒 mysqld 伺服器在回應
Bad handshake
之前等待連線封包的秒數。預設值為 10 秒。如果用戶端經常遇到
Lost connection to MySQL server at '
形式的錯誤,則增加XXX
', system error:errno
connect_timeout
值可能會有所幫助。 -
命令列格式 --connection-memory-chunk-size=#
系統變數 connection_memory_chunk_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 0
最大值 536870912
單位 位元組 設定全域記憶體使用計數器
Global_connection_memory
更新的區塊大小。只有當所有使用者連線的總記憶體消耗量變動超過此數量時,才會更新狀態變數。透過設定connection_memory_chunk_size = 0
來停用更新。記憶體計算不包含系統使用者 (例如 MySQL root 使用者) 使用的任何記憶體。
InnoDB
緩衝池使用的記憶體也不包含在內。您必須擁有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。 -
命令列格式 --connection-memory-limit=#
系統變數 connection_memory_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 18446744073709551615
最小值 2097152
最大值 18446744073709551615
單位 位元組 設定單一使用者連線可使用的最大記憶體量。如果任何使用者連線使用量超過此數量,則會拒絕來自此連線的所有查詢,並傳回
ER_CONN_LIMIT
,包括目前正在執行的任何查詢。此變數設定的限制不適用於系統使用者,也不適用於 MySQL root 帳戶。
InnoDB
緩衝池使用的記憶體也不包含在內。您必須擁有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。 -
如果伺服器意外結束,是否寫入核心檔案。此變數由
--core-file
選項設定。 -
命令列格式 --create-admin-listener-thread[={OFF|ON}]
系統變數 create_admin_listener_thread
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否在管理網路介面上使用專用的接聽執行緒來處理用戶端連線 (請參閱第 7.1.12.1 節,「連線介面」)。預設值為
OFF
;也就是說,主要介面上普通連線的管理員執行緒也會處理管理介面的連線。根據平台類型和工作負載等因素,您可能會發現此變數的一個設定會產生比另一個設定更好的效能。
如果未指定
admin_address
,則設定create_admin_listener_thread
無效,因為在這種情況下,伺服器不會維護任何管理網路介面。 -
命令列格式 --cte-max-recursion-depth=#
系統變數 cte_max_recursion_depth
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000
最小值 0
最大值 4294967295
通用資料表運算式 (CTE) 的最大遞迴深度。伺服器會終止任何遞迴層級超過此變數值的 CTE 的執行。如需詳細資訊,請參閱限制通用資料表運算式遞迴。
-
MySQL 伺服器資料目錄的路徑。相對路徑會以目前目錄為基準進行解析。如果您希望伺服器自動啟動 (也就是說,在您無法預先知道目前目錄的情況下),最好將
datadir
值指定為絕對路徑。 -
命令列格式 --debug[=debug_options]
系統變數 debug
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 (Unix) d:t:i:o,/tmp/mysqld.trace
預設值 (Windows) d:t:i:O,\mysqld.trace
此變數表示目前的偵錯設定。它僅適用於使用偵錯支援建置的伺服器。初始值來自伺服器啟動時給定的
--debug
選項的執行個體值。全域和工作階段值可以在執行階段設定。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
指定以
+
或-
開頭的值會導致該值加入或減去目前值mysql> SET debug = 'T'; mysql> SELECT @@debug; +---------+ | @@debug | +---------+ | T | +---------+ mysql> SET debug = '+P'; mysql> SELECT @@debug; +---------+ | @@debug | +---------+ | P:T | +---------+ mysql> SET debug = '-P'; mysql> SELECT @@debug; +---------+ | @@debug | +---------+ | T | +---------+
如需詳細資訊,請參閱第 7.9.4 節,「DBUG 套件」。
-
系統變數 debug_sync
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數是 Debug Sync 功能的使用者介面。使用 Debug Sync 需要使用
-DWITH_DEBUG=ON
CMake 選項來設定 MySQL (請參閱第 2.8.7 節,「MySQL 來源設定選項」);否則,此系統變數無法使用。全域變數值是唯讀的,表示是否已啟用該功能。依預設,Debug Sync 已停用,且
debug_sync
的值為OFF
。如果伺服器啟動時使用--debug-sync-timeout=
,其中N
N
是大於 0 的逾時值,則會啟用 Debug Sync,且debug_sync
的值為ON - current signal
,後面接著訊號名稱。此外,N
會成為個別同步點的預設逾時。任何使用者都可以讀取工作階段值,且其值與全域變數相同。可以設定工作階段值來控制同步點。
設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
如需瞭解「除錯同步」功能以及如何使用同步點,請參閱 MySQL 內部構造:測試同步。
-
系統變數 default_collation_for_utf8mb4
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 有效值 utf8mb4_0900_ai_ci
utf8mb4_general_ci
重要default_collation_for_utf8mb4
系統變數僅供 MySQL 複製功能內部使用。此變數由伺服器設定為
utf8mb4
字元集的預設排序規則。此變數的值會從來源複製到副本,以便副本能正確處理來自utf8mb4
具有不同預設排序規則的來源資料。此變數主要用於支援從 MySQL 5.7 或更舊的複製來源伺服器複製到較新的 MySQL 副本伺服器,或是在具有 MySQL 5.7 主節點和一或多個 MySQL 8.0 或更新版本的次要節點的群組複製。在 MySQL 5.7 中,utf8mb4
的預設排序規則為utf8mb4_general_ci
,但在較新的版本系列中為utf8mb4_0900_ai_ci
。此變數在 MySQL 8.0 之前的版本中不存在,因此如果副本未收到此變數的值,它會假設來源來自較舊的版本,並將此值設定為先前的預設排序規則utf8mb4_general_ci
。下列語句會使用預設的
utf8mb4
排序規則CREATE TABLE
和ALTER TABLE
具有CHARACTER SET utf8mb4
子句,但沒有COLLATION
子句,無論是針對表格字元集還是欄位字元集。CREATE DATABASE
和ALTER DATABASE
具有CHARACTER SET utf8mb4
子句,但沒有COLLATION
子句。任何包含
_utf8mb4'
形式字串常值的語句,且沒有一些文字
'COLLATE
子句。
另請參閱 第 12.9 節「Unicode 支援」。
-
命令列格式 --default-password-lifetime=#
系統變數 default_password_lifetime
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 65535
單位 天 此變數定義全域自動密碼過期策略。預設的
default_password_lifetime
值為 0,表示停用自動密碼過期。如果default_password_lifetime
的值為正整數N
,則表示允許的密碼存續期;密碼必須每N
天變更一次。可以使用
CREATE USER
和ALTER USER
語句的密碼過期選項,依需要覆寫個別帳戶的全域密碼過期策略。請參閱 第 8.2.15 節「密碼管理」。 -
命令列格式 --default-storage-engine=名稱
系統變數 default_storage_engine
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 InnoDB
表格的預設儲存引擎。請參閱 第 18 章替代儲存引擎。此變數僅設定永久表格的儲存引擎。若要設定
TEMPORARY
表格的儲存引擎,請設定default_tmp_storage_engine
系統變數。若要查看哪些儲存引擎可供使用且已啟用,請使用
SHOW ENGINES
語句或查詢INFORMATION_SCHEMA
ENGINES
表格。如果您在伺服器啟動時停用預設的儲存引擎,則必須將永久和
TEMPORARY
表格的預設引擎都設定為不同的引擎,否則伺服器將不會啟動。 -
命令列格式 --default-table-encryption[={OFF|ON}]
系統變數 default_table_encryption
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
定義在建立結構描述和一般表格空間時,未指定
ENCRYPTION
子句的情況下,套用的預設加密設定。default_table_encryption
變數僅適用於使用者建立的結構描述和一般表格空間。它不控制mysql
系統表格空間的加密。設定
default_table_encryption
的執行階段值需要SYSTEM_VARIABLES_ADMIN
和TABLE_ENCRYPTION_ADMIN
權限,或已棄用的SUPER
權限。default_table_encryption
支援SET PERSIST
和SET PERSIST_ONLY
語法。請參閱 第 7.1.9.3 節「持續性系統變數」。如需更多資訊,請參閱 定義結構描述和一般表格空間的預設加密。
-
命令列格式 --default-tmp-storage-engine=名稱
系統變數 default_tmp_storage_engine
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 列舉 預設值 InnoDB
TEMPORARY
表格(使用CREATE TEMPORARY TABLE
建立)的預設儲存引擎。若要設定永久表格的儲存引擎,請設定default_storage_engine
系統變數。另請參閱該變數關於可能值的討論。如果您在伺服器啟動時停用預設的儲存引擎,則必須將永久和
TEMPORARY
表格的預設引擎都設定為不同的引擎,否則伺服器將不會啟動。 -
命令列格式 --default-week-format=#
系統變數 default_week_format
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 7
用於
WEEK()
函數的預設模式值。請參閱 第 14.7 節「日期和時間函數」。 -
命令列格式 --delay-key-write[={OFF|ON|ALL}]
系統變數 delay_key_write
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 ON
有效值 OFF
ON
ALL
此變數指定如何使用延遲索引鍵寫入。它僅適用於
MyISAM
表格。延遲索引鍵寫入會導致索引鍵緩衝區在寫入之間不被清除。另請參閱 第 18.2.1 節「MyISAM 啟動選項」。此變數可以具有下列其中一個值,以影響在
CREATE TABLE
語句中使用的DELAY_KEY_WRITE
表格選項的處理方式。選項 說明 OFF
DELAY_KEY_WRITE
會被忽略。ON
MySQL 會遵循 CREATE TABLE
語句中指定的任何DELAY_KEY_WRITE
選項。這是預設值。ALL
所有新開啟的表格都視為使用已啟用的 DELAY_KEY_WRITE
選項建立。注意如果您將此變數設定為
ALL
,則當表格在使用中時,不應從其他程式(例如其他 MySQL 伺服器或 myisamchk)中使用MyISAM
表格。這樣做會導致索引損毀。如果為表格啟用
DELAY_KEY_WRITE
,則不會在每次索引更新時清除表格的索引鍵緩衝區,而只會在表格關閉時清除。這會大幅加快索引鍵的寫入速度,但如果您使用此功能,則應透過設定myisam_recover_options
系統變數(例如,myisam_recover_options='BACKUP,FORCE'
)啟動伺服器,來新增所有MyISAM
表格的自動檢查。請參閱 第 7.1.8 節「伺服器系統變數」和 第 18.2.1 節「MyISAM 啟動選項」。如果您使用
--skip-new
啟動 mysqld,則delay_key_write
會設定為OFF
。警告如果您使用
--external-locking
啟用外部鎖定,則對於使用延遲索引鍵寫入的表格,沒有防止索引損毀的保護措施。 -
命令列格式 --delayed-insert-limit=#
已棄用 是 系統變數 delayed_insert_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 100
最小值 1
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
此系統變數已棄用(因為不支援
DELAYED
插入),您應該預期它會在未來的版本中被移除。 -
命令列格式 --delayed-insert-timeout=#
已棄用 是 系統變數 delayed_insert_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 300
最小值 1
最大值 31536000
單位 秒 此系統變數已棄用(因為不支援
DELAYED
插入),您應該預期它會在未來的版本中被移除。 -
命令列格式 --delayed-queue-size=#
已棄用 是 系統變數 delayed_queue_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000
最小值 1
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
此系統變數已棄用(因為不支援
DELAYED
插入),您應該預期它會在未來的版本中被移除。 -
命令列格式 --disabled-storage-engines=引擎[,引擎]...
系統變數 disabled_storage_engines
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 空字串
此變數表示哪些儲存引擎無法用於建立表格或表格空間。例如,若要防止建立新的
MyISAM
或FEDERATED
表格,請在伺服器選項檔案中使用下列這些行啟動伺服器[mysqld] disabled_storage_engines="MyISAM,FEDERATED"
預設情況下,
disabled_storage_engines
為空(未停用任何引擎),但可以將其設定為一或多個引擎的逗號分隔清單(不區分大小寫)。值中命名的任何引擎都無法用於使用CREATE TABLE
或CREATE TABLESPACE
建立表格或表格空間,也無法與ALTER TABLE ... ENGINE
或ALTER TABLESPACE ... ENGINE
一起使用,以變更現有表格或表格空間的儲存引擎。嘗試這樣做會導致ER_DISABLED_STORAGE_ENGINE
錯誤。disabled_storage_engines
不會限制現有資料表的其他 DDL 陳述式,例如CREATE INDEX
、TRUNCATE TABLE
、ANALYZE TABLE
、DROP TABLE
或DROP TABLESPACE
。這允許平滑轉換,以便可以使用諸如ALTER TABLE ... ENGINE
的方法,將使用已停用引擎的現有資料表或資料表空間遷移到允許的引擎。permitted_engine
允許將
default_storage_engine
或default_tmp_storage_engine
系統變數設定為已停用的儲存引擎。這可能會導致應用程式行為異常或失敗,儘管這在開發環境中可能是一種有用的技術,用於識別使用已停用引擎的應用程式,以便可以修改它們。如果伺服器啟動時使用以下任何選項,則
disabled_storage_engines
會停用且無效:--initialize
、--initialize-insecure
、--skip-grant-tables
。 disconnect_on_expired_password
命令列格式 --disconnect-on-expired-password[={OFF|ON}]
系統變數 disconnect_on_expired_password
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
此變數控制伺服器如何處理密碼過期的用戶端
如果用戶端表示它可以處理過期的密碼,則
disconnect_on_expired_password
的值無關緊要。伺服器允許用戶端連線,但會將其置於沙箱模式。如果用戶端未表示它可以處理過期的密碼,則伺服器會根據
disconnect_on_expired_password
的值來處理用戶端如果啟用
disconnect_on_expired_password
,則伺服器會斷開用戶端的連線。如果停用
disconnect_on_expired_password
,則伺服器允許用戶端連線,但會將其置於沙箱模式。
有關用戶端和伺服器設定之間關於過期密碼處理的互動的更多資訊,請參閱 第 8.2.16 節「伺服器處理過期密碼」。
-
命令列格式 --div-precision-increment=#
系統變數 div_precision_increment
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 4
最小值 0
最大值 30
此變數表示使用
/
運算子執行除法運算結果的比例要增加的位數。預設值為 4。最小值和最大值分別為 0 和 30。以下範例說明增加預設值的效果。mysql> SELECT 1/7; +--------+ | 1/7 | +--------+ | 0.1429 | +--------+ mysql> SET div_precision_increment = 12; mysql> SELECT 1/7; +----------------+ | 1/7 | +----------------+ | 0.142857142857 | +----------------+
dragnet.log_error_filter_rules
命令列格式 --dragnet.log-error-filter-rules=value
系統變數 dragnet.log_error_filter_rules
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 IF prio>=INFORMATION THEN drop. IF EXISTS source_line THEN unset source_line.
控制
log_filter_dragnet
錯誤記錄篩選器元件運作的篩選規則。如果未安裝log_filter_dragnet
,則dragnet.log_error_filter_rules
無法使用。如果安裝了log_filter_dragnet
但未啟用,則對dragnet.log_error_filter_rules
的變更不會有任何影響。預設值的效果類似於使用
log_error_verbosity=2
設定的log_sink_internal
篩選器所執行的篩選。可以參考
dragnet.Status
狀態變數,以判斷最近一次指派給dragnet.log_error_filter_rules
的結果。enterprise_encryption.maximum_rsa_key_size
命令列格式 --enterprise-encryption.maximum-rsa-key-size=#
系統變數 enterprise_encryption.maximum_rsa_key_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 4096
最小值 2048
最大值 16384
此變數限制 MySQL Enterprise Encryption 產生的 RSA 金鑰的最大大小。只有在安裝 MySQL Enterprise Encryption 元件
component_enterprise_encryption
時,此變數才可用。最低設定為 2048 位元,這是目前最佳實務可接受的最低 RSA 金鑰長度。預設設定為 4096 位元。最高設定為 16384 位元。產生較長的金鑰可能會消耗大量的 CPU 資源,因此您可以使用此設定將金鑰限制為可為您的需求提供足夠安全性的長度,同時平衡資源使用率。如需更多資訊,請參閱 第 8.6.2 節「設定 MySQL Enterprise Encryption」。
enterprise_encryption.rsa_support_legacy_padding
命令列格式 --enterprise-encryption.rsa_support_legacy_padding[={OFF|ON}]
系統變數 enterprise_encryption.rsa_support_legacy_padding
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制 MySQL Enterprise Encryption 使用舊的
openssl_udf
共用程式庫函式產生的加密資料和簽章是否可由 MySQL Enterprise Encryption 元件 (component_enterprise_encryption
) 解密或驗證。只有在安裝 MySQL Enterprise Encryption 元件時,此變數才可用。為了讓元件函式支援解密和驗證舊的
openssl_udf
共用程式庫函式所產生的內容,您必須將系統變數填補設定為ON
。當設定為ON
時,如果元件函式在假設其具有 RSAES-OAEP 或 RSASSA-PSS 配置 (如元件所使用) 時無法解密或驗證內容,則它們會假設其具有 RSAES-PKCS1-v1_5 或 RSASSA-PKCS1-v1_5 配置 (如openssl_udf
共用程式庫函式所使用) 再次嘗試。當設定為OFF
時,如果元件函式無法使用其正常配置來解密或驗證內容,它們會傳回 null 輸出。如需更多資訊,請參閱 第 8.6.2 節「設定 MySQL Enterprise Encryption」。-
命令列格式 --end-markers-in-json[={OFF|ON}]
系統變數 end_markers_in_json
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
最佳化工具 JSON 輸出是否應加入結束標記。請參閱 MySQL 內部:end_markers_in_json 系統變數。
-
命令列格式 --eq-range-index-dive-limit=#
系統變數 eq_range_index_dive_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 200
最小值 0
最大值 4294967295
此變數表示當最佳化工具應在估計符合條件的資料列數時,從使用索引探測切換到使用索引統計資料時,等式比較條件中的等式範圍數。它適用於評估具有以下任何等效形式的表示式,其中最佳化工具使用非唯一索引來查詢
col_name
值col_name IN(val1, ..., valN) col_name = val1 OR ... OR col_name = valN
在這兩種情況下,表示式都包含
N
個等式範圍。最佳化工具可以使用索引探測或索引統計資料來估計資料列。如果eq_range_index_dive_limit
大於 0,則如果有eq_range_index_dive_limit
或更多等式範圍,最佳化工具會使用現有的索引統計資料,而不是索引探測。因此,為了允許將索引探測用於最多N
個等式範圍,請將eq_range_index_dive_limit
設定為N
+ 1。若要停用索引統計資料的使用,並始終使用索引探測,無論N
為何,請將eq_range_index_dive_limit
設定為 0。如需更多資訊,請參閱 多值比較的等式範圍最佳化。
若要更新資料表索引統計資料以獲得最佳估計值,請使用
ANALYZE TABLE
。 產生訊息的最後一個陳述式所導致的錯誤數。此變數為唯讀。請參閱 第 15.7.7.18 節「SHOW ERRORS 陳述式」。
-
命令列格式 --event-scheduler[=value]
系統變數 event_scheduler
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 ON
有效值 ON
OFF
DISABLED
此變數會啟用或停用事件排程器,並啟動或停止事件排程器。可能狀態值為
ON
、OFF
和DISABLED
。將事件排程器設為OFF
與停用事件排程器不同,停用需要將狀態設定為DISABLED
。在 第 27.4.2 節「事件排程器設定」中更詳細地討論了此變數及其對事件排程器運作的影響 -
命令列格式 --explain-format=format
系統變數 explain_format
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 TRADITIONAL
有效值 TRADITIONAL (DEFAULT)
JSON
TREE
此變數決定
EXPLAIN
在顯示查詢執行計畫時,在沒有FORMAT
選項的情況下所使用的預設輸出格式。此處列出可能的值及其效果TRADITIONAL
:使用 MySQL 的傳統表格式輸出,如同在EXPLAIN
語句中指定了FORMAT=TRADITIONAL
一樣。這是此變數的預設值。DEFAULT
也支援作為TRADITIONAL
的同義詞,並且具有完全相同的效果。注意DEFAULT
不能作為EXPLAIN
語句的FORMAT
選項的一部分使用。JSON
:使用 JSON 輸出格式,如同指定了FORMAT=JSON
一樣。TREE
:使用樹狀結構輸出格式,如同指定了FORMAT=TREE
一樣。
此變數的設定也會影響
EXPLAIN ANALYZE
。就此而言,DEFAULT
和TRADITIONAL
會被解讀為TREE
。如果explain_format
的值為JSON
,且發出了沒有FORMAT
選項的EXPLAIN ANALYZE
語句,該語句會引發錯誤 (ER_NOT_SUPPORTED_YET
)。在
EXPLAIN
或EXPLAIN ANALYZE
中使用格式指定符會覆蓋explain_format
的任何設定。當此語句用於顯示有關表欄位的資訊時,
explain_format
系統變數對EXPLAIN
輸出沒有影響。設定
explain_format
的 Session 值不需要特殊權限;設定全域層級的值則需要SYSTEM_VARIABLES_ADMIN
(或已棄用的SUPER
權限)。請參閱第 7.1.9.1 節「系統變數權限」。如需更多資訊和範例,請參閱取得執行計畫資訊。
-
命令列格式 --explain-json-format-version=#
系統變數 explain_json_format_version
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1
最小值 1
最大值 2
決定
EXPLAIN FORMAT=JSON
語句使用的 JSON 輸出格式的版本。將此變數設定為1
會導致伺服器使用版本 1,這是較舊版本的 MySQL 中用於此類語句輸出的線性格式;這是 MySQL 8.4 中的預設值。將explain_json_format_version
設定為2
會導致使用版本 2 格式;此 JSON 輸出格式基於存取路徑,旨在提供與未來版本的 MySQL Optimizer 更好的相容性。如需使用範例,請參閱取得執行計畫資訊。
explicit_defaults_for_timestamp
命令列格式 --explicit-defaults-for-timestamp[={OFF|ON}]
已棄用 是 系統變數 explicit_defaults_for_timestamp
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
此系統變數決定伺服器是否啟用
TIMESTAMP
欄位中預設值和NULL
值處理的某些非標準行為。預設情況下,explicit_defaults_for_timestamp
處於啟用狀態,這會停用非標準行為。停用explicit_defaults_for_timestamp
會導致警告。如果停用
explicit_defaults_for_timestamp
,伺服器會啟用非標準行為並按照以下方式處理TIMESTAMP
欄位:未明確宣告具有
NULL
屬性的TIMESTAMP
欄位會自動宣告具有NOT NULL
屬性。允許為此類欄位指派NULL
值,並將欄位設定為目前的時間戳記。例外情況:嘗試將NULL
插入宣告為TIMESTAMP NOT NULL
的產生欄位時,會被拒絕並顯示錯誤。如果表格中的第一個
TIMESTAMP
欄位未明確宣告具有NULL
屬性或明確的DEFAULT
或ON UPDATE
屬性,則會自動宣告具有DEFAULT CURRENT_TIMESTAMP
和ON UPDATE CURRENT_TIMESTAMP
屬性。第一個
TIMESTAMP
欄位之後的TIMESTAMP
欄位,如果未明確宣告具有NULL
屬性或明確的DEFAULT
屬性,則會自動宣告為DEFAULT '0000-00-00 00:00:00'
(「零」時間戳記)。對於未指定此類欄位明確值的插入列,會為該欄位指派'0000-00-00 00:00:00'
,並且不會發生警告。根據是否啟用嚴格 SQL 模式或
NO_ZERO_DATE
SQL 模式,預設值'0000-00-00 00:00:00'
可能無效。請注意,TRADITIONAL
SQL 模式包含嚴格模式和NO_ZERO_DATE
。請參閱第 7.1.11 節「伺服器 SQL 模式」。
剛才描述的非標準行為已被棄用;預期它們將在未來的 MySQL 版本中移除。
如果啟用
explicit_defaults_for_timestamp
,伺服器會停用非標準行為並按照以下方式處理TIMESTAMP
欄位:無法將
TIMESTAMP
欄位的值指派為NULL
以將其設定為目前的時間戳記。若要指派目前的時間戳記,請將欄位設定為CURRENT_TIMESTAMP
或同義詞,例如NOW()
。未明確宣告具有
NOT NULL
屬性的TIMESTAMP
欄位會自動宣告具有NULL
屬性並允許NULL
值。為此類欄位指派NULL
值會將其設定為NULL
,而不是目前的時間戳記。宣告具有
NOT NULL
屬性的TIMESTAMP
欄位不允許NULL
值。對於為此類欄位指定NULL
的插入,如果啟用嚴格 SQL 模式,則單列插入的結果會是錯誤;如果停用嚴格 SQL 模式,則多列插入的結果會插入'0000-00-00 00:00:00'
。在任何情況下,為欄位指派NULL
值都不會將其設定為目前的時間戳記。明確宣告具有
NOT NULL
屬性且沒有明確DEFAULT
屬性的TIMESTAMP
欄位會被視為沒有預設值。對於未指定此類欄位明確值的插入列,結果取決於 SQL 模式。如果啟用嚴格 SQL 模式,則會發生錯誤。如果未啟用嚴格 SQL 模式,則會使用隱含的預設值'0000-00-00 00:00:00'
宣告該欄位,並且會發生警告。這與 MySQL 處理其他時間類型(例如DATETIME
)的方式類似。不會自動使用
DEFAULT CURRENT_TIMESTAMP
或ON UPDATE CURRENT_TIMESTAMP
屬性宣告任何TIMESTAMP
欄位。必須明確指定這些屬性。
如果在伺服器啟動時停用
explicit_defaults_for_timestamp
,則錯誤記錄中會出現此警告:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
如警告所示,若要停用已棄用的非標準行為,請在伺服器啟動時啟用
explicit_defaults_for_timestamp
系統變數。注意explicit_defaults_for_timestamp
本身已棄用,因為其唯一目的是允許控制已棄用的TIMESTAMP
行為,這些行為將在未來的 MySQL 版本中移除。當這些行為被移除時,預計也會移除explicit_defaults_for_timestamp
。如需其他資訊,請參閱第 13.2.5 節「TIMESTAMP 和 DATETIME 的自動初始化和更新」。
-
系統變數 external_user
範圍 工作階段 動態 否 SET_VAR
提示適用否 類型 字串 在驗證過程中使用的外部使用者名稱,由用於驗證用戶端的插件設定。使用原生(內建)MySQL 驗證,或如果插件未設定該值,此變數為
NULL
。請參閱第 8.2.19 節「Proxy Users」。 -
如果為
ON
,伺服器會在每個 SQL 語句後將所有變更刷新(同步)到磁碟。通常,MySQL 只會在每個 SQL 語句後將所有變更寫入磁碟,並讓作業系統處理與磁碟的同步。請參閱第 B.3.3.3 節「如果 MySQL 持續崩潰該怎麼辦」。如果使用--flush
選項啟動 mysqld,則此變數會設為ON
。注意如果啟用
flush
,則flush_time
的值無關緊要,且變更flush_time
對刷新行為沒有影響。 -
命令列格式 --flush-time=#
系統變數 flush_time
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 31536000
單位 秒 如果設定為非零值,則每隔
flush_time
秒會關閉所有表格,以釋放資源並將未刷新的資料同步到磁碟。此選項最好僅用於資源最少的系統。注意如果啟用
flush
,則flush_time
的值無關緊要,且變更flush_time
對刷新行為沒有影響。 -
系統變數 foreign_key_checks
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
如果設定為 1 (預設值),則會檢查外鍵約束。如果設定為 0,則會忽略外鍵約束,但有幾個例外。重新建立已刪除的表格時,如果表格定義不符合參照該表格的外鍵約束,則會傳回錯誤。同樣地,如果外鍵定義的格式不正確,
ALTER TABLE
操作會傳回錯誤。如需詳細資訊,請參閱第 15.1.20.5 節「FOREIGN KEY 約束」。將此變數設定為
NDB
表格的效果與對InnoDB
表格的效果相同。通常您會在正常操作期間啟用此設定,以強制執行參考完整性。停用外鍵檢查對於以不同於其父/子關係所要求的順序重新載入InnoDB
表格可能很有用。請參閱第 15.1.20.5 節「FOREIGN KEY 約束」。將
foreign_key_checks
設定為 0 也會影響資料定義語句:DROP SCHEMA
會刪除綱要,即使它包含具有外部綱要表格參照的外鍵的表格,並且DROP TABLE
會刪除具有其他表格參照的外鍵的表格。注意將
foreign_key_checks
設定為 1 不會觸發對現有表格資料的掃描。因此,在foreign_key_checks = 0
時新增至表格的列不會驗證一致性。不允許刪除外鍵約束所需的索引,即使使用
foreign_key_checks=0
也是如此。必須先移除外鍵約束,才能刪除索引。 -
命令列格式 --ft-boolean-syntax=name
系統變數 ft_boolean_syntax
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 + -><()~*:""&|
使用
IN BOOLEAN MODE
執行的布林全文檢索搜尋支援的運算子清單。請參閱第 14.9.2 節「布林全文檢索搜尋」。預設變數值為
'+ -><()~*:""&|'
。變更值的規則如下運算子功能由字串內的位置決定。
取代值必須為 14 個字元。
每個字元都必須是非英數字元的 ASCII 字元。
第一個或第二個字元必須是空格。
不允許重複,除非位置 11 和 12 中的片語引號運算子。這兩個字元不需要相同,但它們是唯一可以相同的兩個字元。
位置 10、13 和 14(預設設定為
:
、&
和|
)保留供未來擴充使用。
-
命令列格式 --ft-max-word-len=#
系統變數 ft_max_word_len
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 84
最小值 10
最大值 84
要包含在
MyISAM
FULLTEXT
索引中的最大單字長度。注意在變更此變數後,必須重建
MyISAM
表格上的FULLTEXT
索引。使用REPAIR TABLE
。tbl_name
QUICK -
命令列格式 --ft-min-word-len=#
系統變數 ft_min_word_len
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 4
最小值 1
最大值 82
要包含在
MyISAM
FULLTEXT
索引中的最小單字長度。注意在變更此變數後,必須重建
MyISAM
表格上的FULLTEXT
索引。使用REPAIR TABLE
。tbl_name
QUICK -
命令列格式 --ft-query-expansion-limit=#
系統變數 ft_query_expansion_limit
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 20
最小值 0
最大值 1000
要用於使用
WITH QUERY EXPANSION
執行的全文檢索搜尋的頂端相符項目數量。 -
命令列格式 --ft-stopword-file=file_name
系統變數 ft_stopword_file
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 要從中讀取
MyISAM
表格全文檢索搜尋的停用字清單的檔案。伺服器會在資料目錄中尋找檔案,除非給定絕對路徑名稱來指定不同的目錄。使用檔案中的所有單字;不接受註解。預設情況下,會使用內建的停用字清單(如storage/myisam/ft_static.c
檔案中所定義)。將此變數設定為空字串 (''
) 會停用停用字篩選。另請參閱第 14.9.4 節「全文檢索停用字」。注意在變更此變數或停用字檔案的內容後,必須重建
MyISAM
表格上的FULLTEXT
索引。使用REPAIR TABLE
。tbl_name
QUICK -
命令列格式 --general-log[={OFF|ON}]
系統變數 general_log
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否啟用一般查詢記錄。值可以是 0(或
OFF
)以停用記錄,或 1(或ON
)以啟用記錄。記錄輸出的目的地由log_output
系統變數控制;如果該值為NONE
,即使啟用記錄,也不會寫入任何記錄項目。 -
命令列格式 --general-log-file=file_name
系統變數 general_log_file
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 host_name.log
一般查詢記錄檔的名稱。預設值為
,但可以使用host_name
.log--general_log_file
選項變更初始值。 generated_random_password_length
命令列格式 --generated-random-password-length=#
系統變數 generated_random_password_length
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 20
最小值 5
最大值 255
為
CREATE USER
、ALTER USER
和SET PASSWORD
語句產生的隨機密碼中允許的最大字元數。如需詳細資訊,請參閱隨機密碼產生。global_connection_memory_limit
命令列格式 --global-connection-memory-limit=#
系統變數 global_connection_memory_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 18446744073709551615
最小值 16777216
最大值 18446744073709551615
單位 位元組 設定所有使用者連線可使用的總記憶體量;也就是說,
Global_connection_memory
不應超過此量。任何時候超過此量,都會以ER_GLOBAL_CONN_LIMIT
拒絕所有來自一般使用者的查詢(包括任何目前正在執行的查詢)。系統使用者(例如 MySQL root 使用者)使用的記憶體會包含在此總數中,但不計入中斷連線限制;此類使用者永遠不會因記憶體使用量而中斷連線。
從總數中排除
InnoDB
緩衝池使用的記憶體。您必須擁有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。global_connection_memory_tracking
命令列格式 --global-connection-memory-tracking={TRUE|FALSE}
系統變數 global_connection_memory_tracking
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 FALSE
決定伺服器是否計算
Global_connection_memory
。必須明確啟用此變數;否則,不會執行記憶體計算,且不會設定Global_connection_memory
。您必須擁有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。-
命令列格式 --group-concat-max-len=#
系統變數 group_concat_max_len
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1024
最小值 4
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
GROUP_CONCAT()
函數允許的最大結果長度(以位元組為單位)。預設值為 1024。 如果伺服器可以使用
zlib
壓縮函式庫,則為YES
,否則為NO
。如果為否,則無法使用COMPRESS()
和UNCOMPRESS()
函式。如果 mysqld 支援外掛程式的動態載入,則為
YES
,否則為NO
。如果值為NO
,則無法使用諸如--plugin-load
等選項在伺服器啟動時載入外掛程式,或使用INSTALL PLUGIN
陳述式在執行時載入外掛程式。如果伺服器支援空間資料類型,則為
YES
,否則為NO
。如果存在陳述式效能分析功能,則為
YES
,否則為NO
。如果存在,profiling
系統變數會控制此功能是否啟用或停用。請參閱 第 15.7.7.32 節,「SHOW PROFILES 陳述式」。此變數已棄用;您應該預期它會在未來的 MySQL 版本中移除。
have_query_cache
已棄用,永遠具有NO
的值,您應該預期它會在未來的 MySQL 版本中移除。如果可以使用
RTREE
索引,則為YES
,否則為NO
。(這些用於MyISAM
表格中的空間索引。)-
系統變數 have_statement_timeout
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 陳述式執行逾時功能是否可用(請參閱 陳述式執行時間最佳化提示)。如果此功能使用的背景執行緒無法初始化,則值可能為
NO
。 如果啟用符號連結支援,則為
YES
,否則為NO
。在 Unix 上,這是支援DATA DIRECTORY
和INDEX DIRECTORY
表格選項所必需的。如果伺服器啟動時使用--skip-symbolic-links
選項,則值為DISABLED
。此變數在 Windows 上沒有意義。
注意符號連結支援,以及控制它的
--symbolic-links
選項已棄用;預期這些將在未來版本的 MySQL 中移除。此外,此選項預設為停用。相關的have_symlink
系統變數也已棄用,您應該預期它會在未來的 MySQL 版本中移除。histogram_generation_max_mem_size
命令列格式 --histogram-generation-max-mem-size=#
系統變數 histogram_generation_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 20000000
最小值 1000000
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
單位 位元組 產生直方圖統計資料可用的最大記憶體量。請參閱 第 10.9.6 節,「最佳化工具統計資料」和 第 15.7.3.1 節,「ANALYZE TABLE 陳述式」。
設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --host-cache-size=#
系統變數 host_cache_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 0
最大值 65536
MySQL 伺服器維護一個記憶體中的主機快取,其中包含用戶端主機名稱和 IP 位址資訊,並用於避免網域名稱系統 (DNS) 查閱;請參閱 第 7.1.12.3 節,「DNS 查閱和主機快取」。
host_cache_size
變數會控制主機快取的大小,以及公開快取內容的 Performance Schemahost_cache
表格的大小。設定host_cache_size
具有以下效果:將大小設定為 0 會停用主機快取。停用快取後,伺服器會在每次用戶端連線時執行 DNS 查閱。
在執行時變更大小會導致隱式主機快取清除操作,這會清除主機快取、截斷
host_cache
表格,並取消封鎖任何封鎖的主機。
預設值會自動調整為 128,加上
max_connections
值高達 500 的值加 1,加上max_connections
值超過 500 時,每遞增 20 就加 1,上限為 2000。 -
伺服器會在啟動時將此變數設定為伺服器主機名稱。最大長度為 255 個字元。
此變數是
last_insert_id
變數的同義詞。它的存在是為了與其他資料庫系統相容。您可以使用SELECT @@identity
讀取其值,並使用SET identity
設定它。-
命令列格式 --init-connect=name
系統變數 init_connect
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 伺服器為每個連線的用戶端執行的字串。此字串由一個或多個 SQL 陳述式組成,並以分號字元分隔。
對於具有
CONNECTION_ADMIN
權限(或已棄用的SUPER
權限)的使用者,不會執行init_connect
的內容。這樣做的目的是為了防止init_connect
的錯誤值阻止所有用戶端連線。例如,此值可能包含語法錯誤的陳述式,從而導致用戶端連線失敗。不為具有CONNECTION_ADMIN
或SUPER
權限的使用者執行init_connect
,可讓他們開啟連線並修正init_connect
的值。對於任何密碼已過期的用戶端使用者,會跳過
init_connect
的執行。這樣做是因為此類使用者無法執行任意陳述式,因此init_connect
的執行會失敗,導致用戶端無法連線。跳過init_connect
的執行可讓使用者連線並變更密碼。伺服器會捨棄
init_connect
值中陳述式產生的任何結果集。 information_schema_stats_expiry
命令列格式 --information-schema-stats-expiry=#
系統變數 information_schema_stats_expiry
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 86400
最小值 0
最大值 31536000
單位 秒 某些
INFORMATION_SCHEMA
表格包含提供表格統計資料的欄位。STATISTICS.CARDINALITY TABLES.AUTO_INCREMENT TABLES.AVG_ROW_LENGTH TABLES.CHECKSUM TABLES.CHECK_TIME TABLES.CREATE_TIME TABLES.DATA_FREE TABLES.DATA_LENGTH TABLES.INDEX_LENGTH TABLES.MAX_DATA_LENGTH TABLES.TABLE_ROWS TABLES.UPDATE_TIME
這些欄位代表動態表格中繼資料;也就是說,隨著表格內容變更而變更的資訊。
預設情況下,當查詢這些欄位時,MySQL 會從
mysql.index_stats
和mysql.table_stats
字典表格中擷取這些欄位的快取值,這比直接從儲存引擎擷取統計資料更有效率。如果快取統計資料不可用或已過期,MySQL 會從儲存引擎擷取最新的統計資料,並將其快取在mysql.index_stats
和mysql.table_stats
字典表格中。後續查詢會擷取快取的統計資料,直到快取的統計資料過期。伺服器重新啟動或第一次開啟mysql.index_stats
和mysql.table_stats
表格不會自動更新快取的統計資料。information_schema_stats_expiry
工作階段變數定義快取的統計資料過期前的時間長度。預設值為 86400 秒(24 小時),但時間長度可以延長至最多一年。若要隨時更新給定表格的快取值,請使用
ANALYZE TABLE
。若要始終直接從儲存引擎擷取最新的統計資料並略過快取值,請將
information_schema_stats_expiry
設定為0
。在以下情況下,查詢統計資料欄位不會在
mysql.index_stats
和mysql.table_stats
字典表格中儲存或更新統計資料:當快取的統計資料未過期時。
當
information_schema_stats_expiry
設定為 0 時。當伺服器處於
read_only
、super_read_only
、transaction_read_only
或innodb_read_only
模式時。當查詢也提取 Performance Schema 資料時。
統計資料快取可能會在多語句交易期間更新,在已知交易是否提交之前。因此,快取可能包含與已知已提交狀態不符的資訊。這可能會在
autocommit=0
或在START TRANSACTION
之後發生。information_schema_stats_expiry
是一個會話變數,每個用戶端會話都可以定義自己的到期值。從儲存引擎檢索並由一個會話快取的統計資料可供其他會話使用。相關資訊,請參閱 第 10.2.3 節,「最佳化 INFORMATION_SCHEMA 查詢」。
-
如果指定此變數,則此變數會命名一個包含 SQL 陳述式的檔案,這些陳述式將在啟動過程中讀取和執行。此檔案中陳述式的可接受格式支援以下結構
delimiter ;
,將陳述式分隔符號設定為;
字元。delimiter $$
,將陳述式分隔符號設定為$$
字元序列。同一行上的多個陳述式,由目前的分隔符號分隔。
多行陳述式。
從
#
字元到行尾的註解。從
--
序列到行尾的註解。C 樣式註解,從
/*
序列到下一個*/
序列,包括跨多行。包含在單引號 (
'
) 或雙引號 ("
) 字元中的多行字串文字。
如果伺服器使用
--initialize
或--initialize-insecure
選項啟動,則它會在引導模式下運作,並且某些功能不可用,這會限制檔案中允許的陳述式。這些包括與帳戶管理相關的陳述式(例如CREATE USER
或GRANT
)、複製和全域交易識別碼。請參閱 第 19.1.3 節,「使用全域交易識別碼進行複製」。伺服器啟動期間建立的執行緒用於執行諸如建立資料字典、執行升級程序和建立系統表格等任務。為了確保穩定且可預測的環境,這些執行緒會使用伺服器內建的預設值來執行某些系統變數,例如
sql_mode
、character_set_server
、collation_server
、completion_type
、explicit_defaults_for_timestamp
和default_table_encryption
。這些執行緒也用於執行使用
init_file
指定的任何檔案中的陳述式,當啟動伺服器時,因此這些陳述式會使用伺服器內建的預設值來執行這些系統變數。 innodb_
xxx
InnoDB
系統變數列在 第 17.14 節,「InnoDB 啟動選項和系統變數」中。這些變數控制InnoDB
表格的儲存、記憶體使用和 I/O 模式的許多方面,並且現在InnoDB
是預設儲存引擎,因此尤其重要。當插入
AUTO_INCREMENT
值時,以下INSERT
或ALTER TABLE
陳述式要使用的值。這主要與二進位日誌一起使用。-
命令列格式 --interactive-timeout=#
系統變數 interactive_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 28800
最小值 1
最大值 31536000
單位 秒 伺服器在關閉互動連線之前等待活動的秒數。互動式用戶端定義為使用
CLIENT_INTERACTIVE
選項到mysql_real_connect()
的用戶端。另請參閱wait_timeout
。 internal_tmp_mem_storage_engine
命令列格式 --internal-tmp-mem-storage-engine=#
系統變數 internal_tmp_mem_storage_engine
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 列舉 預設值 TempTable
有效值 MEMORY
TempTable
用於記憶體內部暫存表格的儲存引擎(請參閱 第 10.4.4 節,「MySQL 中內部暫存表格的使用」)。允許的值為
TempTable
(預設值)和MEMORY
。最佳化器會使用
internal_tmp_mem_storage_engine
定義的儲存引擎來用於記憶體內部暫存表格。設定
internal_tmp_mem_storage_engine
的會話設定需要SESSION_VARIABLES_ADMIN
或SYSTEM_VARIABLES_ADMIN
權限。-
命令列格式 --join-buffer-size=#
系統變數 join_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 262144
最小值 128
最大值 (Windows) 4294967168
最大值 (其他,64 位元平台) 18446744073709551488
最大值 (其他,32 位元平台) 4294967168
單位 位元組 區塊大小 128
用於純索引掃描、範圍索引掃描和不使用索引並因此執行完整表格掃描的聯結的緩衝區的最小大小。此變數也控制雜湊聯結使用的記憶體量。通常,獲得快速聯結的最佳方法是新增索引。當無法新增索引時,請增加
join_buffer_size
的值以獲得更快的完整聯結。在兩個表格之間的每個完整聯結都會分配一個聯結緩衝區。對於不使用索引的多個表格之間的複雜聯結,可能需要多個聯結緩衝區。預設值為 256KB。
join_buffer_size
的最大允許設定為 4GB−1。允許 64 位元平台使用較大的值(64 位元 Windows 除外,其中較大的值會截斷為 4GB−1 並發出警告)。區塊大小為 128,且 MySQL 伺服器在儲存系統變數的值之前,會將不是區塊大小確切倍數的值向下捨入到區塊大小的下一個較小的倍數。剖析器允許值高達平台的最大不帶正負號的整數值(對於 32 位元系統,為 4294967295 或 232−1,對於 64 位元系統,為 18446744073709551615 或 264−1),但實際最大值是較低的區塊大小。除非使用區塊巢狀迴圈或批次金鑰存取演算法,否則設定大於容納每個相符列所需的緩衝區不會有任何增益,並且所有聯結至少會分配最小大小,因此請謹慎地將此變數全域設定為較大的值。最好將全域設定保持較小,並且僅在執行大型聯結的會話中將會話設定變更為較大的值,或者使用
SET_VAR
最佳化器提示,根據每個查詢變更設定(請參閱 第 10.9.3 節,「最佳化器提示」)。如果全域大小大於使用它的多數查詢所需的大小,則記憶體配置時間可能會導致效能大幅下降。當使用區塊巢狀迴圈時,較大的聯結緩衝區可能會有好處,直到將第一個表格中所有列的所有必要欄都儲存在聯結緩衝區中。這取決於查詢;最佳大小可能小於容納第一個表格的所有列。
當使用批次金鑰存取時,
join_buffer_size
的值會定義每個儲存引擎請求中金鑰批次的大小。緩衝區越大,對聯結操作的右手表格的循序存取越多,這可以顯著提高效能。有關聯結緩衝的更多資訊,請參閱 第 10.2.1.7 節,「巢狀迴圈聯結演算法」。有關批次金鑰存取的資訊,請參閱 第 10.2.1.12 節,「區塊巢狀迴圈和批次金鑰存取聯結」。有關雜湊聯結的資訊,請參閱 第 10.2.1.4 節,「雜湊聯結最佳化」。
-
命令列格式 --keep-files-on-create[={OFF|ON}]
系統變數 keep_files_on_create
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果建立沒有
DATA DIRECTORY
選項的MyISAM
表格,則會在資料庫目錄中建立.MYD
檔案。預設情況下,如果MyISAM
在這種情況下找到現有的.MYD
檔案,它會覆寫它。對於使用沒有INDEX DIRECTORY
選項建立的表格的.MYI
檔案也是如此。若要抑制此行為,請將keep_files_on_create
變數設定為ON
(1),在這種情況下,MyISAM
不會覆寫現有檔案,而是會傳回錯誤。預設值為OFF
(0)。如果使用
DATA DIRECTORY
或INDEX DIRECTORY
選項建立MyISAM
表格,並且找到現有的.MYD
或.MYI
檔案,MyISAM 總是會返回錯誤。它不會覆寫指定目錄中的檔案。 -
命令列格式 --key-buffer-size=#
系統變數 key_buffer_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8388608
最小值 0
最大值(64 位元平台) OS_PER_PROCESS_LIMIT
最大值(32 位元平台) 4294967295
單位 位元組 MyISAM
表格的索引區塊會被緩衝,並由所有執行緒共用。key_buffer_size
是用於索引區塊的緩衝區大小。金鑰緩衝區也稱為金鑰快取。最小允許設定值為 0,但您無法動態將
key_buffer_size
設定為 0。設定為 0 會捨棄金鑰快取,這在執行階段是不允許的。僅在啟動時才允許將key_buffer_size
設定為 0,在這種情況下,金鑰快取不會初始化。在執行階段將key_buffer_size
設定從值 0 變更為允許的非零值會初始化金鑰快取。key_buffer_size
只能以 4096 位元組的增量或倍數增加或減少。以不符合規定的值增加或減少設定會產生警告,並將設定截斷為符合規定的值。key_buffer_size
在 32 位元平台上最大允許設定為 4GB-1。對於 64 位元平台,允許更大的值。有效最大大小可能會較小,具體取決於您可用的實體 RAM 和作業系統或硬體平台施加的每個處理程序 RAM 限制。此變數的值表示請求的記憶體量。在內部,伺服器會盡可能分配最多到此數量的記憶體,但實際分配量可能較少。您可以增加此值,以改善所有讀取和多次寫入的索引處理;在主要功能是使用
MyISAM
儲存引擎執行 MySQL 的系統上,機器總記憶體的 25% 是此變數的可接受值。但是,您應該注意,如果將該值設定得太大(例如,超過機器總記憶體的 50%),您的系統可能會開始分頁並變得極慢。這是因為 MySQL 依賴作業系統來執行資料讀取的文件系統快取,因此您必須為文件系統快取保留一些空間。您還應該考慮您可能使用的任何其他儲存引擎(除了MyISAM
之外)的記憶體需求。為了在同時寫入多行時獲得更快的速度,請使用
LOCK TABLES
。請參閱第 10.2.5.1 節,「最佳化 INSERT 陳述式」。您可以發出
SHOW STATUS
陳述式並檢查Key_read_requests
、Key_reads
、Key_write_requests
和Key_writes
狀態變數來檢查金鑰緩衝區的效能。(請參閱第 15.7.7 節,「SHOW 陳述式」。)Key_reads/Key_read_requests
比率通常應小於 0.01。Key_writes/Key_write_requests
比率通常接近 1,如果您主要使用更新和刪除,但如果您傾向於同時執行影響多行的更新,或如果您使用DELAY_KEY_WRITE
表格選項,則可能小得多。可以使用
key_buffer_size
以及Key_blocks_unused
狀態變數和緩衝區區塊大小(可從key_cache_block_size
系統變數取得)來判斷金鑰緩衝區的使用比例。1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
此值為近似值,因為金鑰緩衝區中的某些空間會被內部配置用於管理結構。影響這些結構的額外負荷量的因素包括區塊大小和指標大小。隨著區塊大小的增加,金鑰緩衝區因額外負荷而損失的百分比趨於減少。較大的區塊會導致較少的讀取操作次數(因為每次讀取會取得更多金鑰),但反過來會增加讀取未檢查的金鑰次數(如果區塊中的所有金鑰都與查詢無關)。
可以建立多個
MyISAM
金鑰快取。4GB 的大小限制適用於每個快取,而不是群組。請參閱第 10.10.2 節,「MyISAM 金鑰快取」。 -
命令列格式 --key-cache-age-threshold=#
系統變數 key_cache_age_threshold
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 300
最小值 100
最大值(64 位元平台) 18446744073709551516
最大值(32 位元平台) 4294967196
區塊大小 100
此值控制緩衝區從金鑰快取的熱子清單降級到暖子清單。較低的值會導致更快地發生降級。最小值為 100。預設值為 300。請參閱第 10.10.2 節,「MyISAM 金鑰快取」。
-
命令列格式 --key-cache-block-size=#
系統變數 key_cache_block_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1024
最小值 512
最大值 16384
單位 位元組 區塊大小 512
金鑰快取中區塊的大小(以位元組為單位)。預設值為 1024。請參閱第 10.10.2 節,「MyISAM 金鑰快取」。
-
命令列格式 --key-cache-division-limit=#
系統變數 key_cache_division_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 100
最小值 1
最大值 100
金鑰快取緩衝區清單的熱子清單和暖子清單之間的分隔點。該值是要用於暖子清單的緩衝區清單的百分比。允許的值範圍為 1 到 100。預設值為 100。請參閱第 10.10.2 節,「MyISAM 金鑰快取」。
-
系統變數 large_files_support
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 是否已使用大型檔案支援的選項編譯 mysqld。
-
命令列格式 --large-pages[={OFF|ON}]
系統變數 large_pages
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Linux 類型 布林值 預設值 OFF
是否已啟用大型頁面支援(透過
--large-pages
選項)。請參閱第 10.12.3.3 節,「啟用大型頁面支援」。 -
系統變數 large_page_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 65535
單位 位元組 如果啟用大型頁面支援,則會顯示記憶體頁面的大小。大型記憶體頁面僅在 Linux 上受支援;在其他平台上,此變數的值始終為 0。請參閱第 10.12.3.3 節,「啟用大型頁面支援」。
要從
LAST_INSERT_ID()
返回的值。當您在更新表格的陳述式中使用LAST_INSERT_ID()
時,此值會儲存在二進位記錄中。設定此變數不會更新mysql_insert_id()
C API 函式所返回的值。-
命令列格式 --lc-messages=name
系統變數 lc_messages
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 en_US
用於錯誤訊息的語言環境。預設值為
en_US
。伺服器會將引數轉換為語言名稱,並將其與lc_messages_dir
的值組合,以產生錯誤訊息檔案的位置。請參閱第 12.12 節,「設定錯誤訊息語言」。 -
命令列格式 --lc-messages-dir=dir_name
系統變數 lc_messages_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 錯誤訊息所在的目錄。伺服器會將該值與
lc_messages
的值一起使用,以產生錯誤訊息檔案的位置。請參閱第 12.12 節,「設定錯誤訊息語言」。 -
命令列格式 --lc-time-names=value
系統變數 lc_time_names
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數指定控制顯示日期和月份名稱及縮寫的語言環境。此變數會影響
DATE_FORMAT()
、DAYNAME()
和MONTHNAME()
函數的輸出。語言環境名稱是 POSIX 樣式的值,例如'ja_JP'
或'pt_BR'
。預設值為'en_US'
,無論您的系統語言環境設定為何。如需更多資訊,請參閱 第 12.16 節,「MySQL 伺服器語言環境支援」。 -
伺服器擁有的授權類型。
-
命令列格式 --local-infile[={OFF|ON}]
系統變數 local_infile
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制伺服器端的
LOCAL
功能,用於LOAD DATA
陳述式。根據local_infile
設定,伺服器會拒絕或允許用戶端載入本機資料,而用戶端在用戶端端已啟用LOCAL
。若要明確讓伺服器拒絕或允許
LOAD DATA LOCAL
陳述式(無論用戶端程式和程式庫在建置時或執行時如何設定),請分別以停用或啟用local_infile
的方式啟動 mysqld。local_infile
也可以在執行時設定。如需更多資訊,請參閱 第 8.1.6 節,「LOAD DATA LOCAL 的安全性考量」。 -
命令列格式 --lock-wait-timeout=#
系統變數 lock_wait_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 31536000
最小值 1
最大值 31536000
單位 秒 此變數指定嘗試取得中繼資料鎖定的逾時時間(以秒為單位)。允許的值範圍為 1 到 31536000(1 年)。預設值為 31536000。
此逾時時間適用於所有使用中繼資料鎖定的陳述式。這些包括資料表、檢視、預存程序和預存函數上的 DML 和 DDL 作業,以及
LOCK TABLES
、FLUSH TABLES WITH READ LOCK
和HANDLER
陳述式。此逾時時間不適用於
mysql
資料庫中系統資料表的隱含存取,例如GRANT
或REVOKE
陳述式修改的授權資料表,或資料表記錄陳述式。此逾時時間適用於直接存取的系統資料表,例如使用SELECT
或UPDATE
。逾時值會分別適用於每次中繼資料鎖定嘗試。給定的陳述式可能需要一個以上的鎖定,因此陳述式可能會在回報逾時錯誤之前,封鎖的時間長於
lock_wait_timeout
值。發生鎖定逾時時,會回報ER_LOCK_WAIT_TIMEOUT
。lock_wait_timeout
也定義LOCK INSTANCE FOR BACKUP
陳述式在放棄之前等待鎖定的時間量。 -
系統變數 locked_in_memory
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
-
預設錯誤記錄目的地。如果目的地是主控台,則值為
stderr
。否則,目的地是檔案,且log_error
值為檔案名稱。請參閱 第 7.4.2 節,「錯誤記錄」。 -
命令列格式 --log-error-services=value
系統變數 log_error_services
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 log_filter_internal; log_sink_internal
要為錯誤記錄啟用的元件。變數可能包含 0、1 或多個元素的清單。在後一種情況下,元素可能會以分號或逗號分隔,並可選擇性地接上空格。給定的設定無法同時使用分號和逗號分隔符號。元件順序很重要,因為伺服器會依列出的順序執行元件。
如果在
log_error_services
中命名的任何可載入 (非內建) 元件尚未載入,則會隱含載入。如需更多資訊,請參閱 第 7.4.2.1 節,「錯誤記錄設定」。 -
命令列格式 --log-error-suppression-list=value
系統變數 log_error_suppression_list
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 空字串
log_error_suppression_list
系統變數適用於預定用於錯誤記錄的事件,並指定當事件發生且優先順序為WARNING
或INFORMATION
時要隱藏的事件。例如,如果特定類型的警告被視為錯誤記錄中不必要的「雜訊」,因為它發生頻繁但沒有意義,則可以隱藏它。此變數會影響預設啟用的log_filter_internal
錯誤記錄篩選器元件所執行的篩選(請參閱 第 7.5.3 節,「錯誤記錄元件」)。如果停用log_filter_internal
,log_error_suppression_list
則不會有任何作用。log_error_suppression_list
值可能為空字串表示不隱藏,或一個或多個以逗號分隔的值清單,指示要隱藏的錯誤碼。錯誤碼可以用符號或數值形式指定。可以用或不用MY-
前置詞指定數值碼。數值部分的前導零並不重要。允許的程式碼格式範例如下ER_SERVER_SHUTDOWN_COMPLETE MY-000031 000031 MY-31 31
符號值比數值更容易閱讀和攜帶,因此建議使用符號值。如需有關允許的錯誤符號和數字的資訊,請參閱 MySQL 8.4 錯誤訊息參考。
log_error_suppression_list
的效果會與log_error_verbosity
的效果結合。如需更多資訊,請參閱 第 7.4.2.5 節,「基於優先順序的錯誤記錄篩選 (log_filter_internal)」。 -
命令列格式 --log-error-verbosity=#
系統變數 log_error_verbosity
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 1
最大值 3
log_error_verbosity
系統變數指定用於處理預定用於錯誤記錄之事件的詳細程度。此變數會影響預設啟用的log_filter_internal
錯誤記錄篩選器元件所執行的篩選(請參閱 第 7.5.3 節,「錯誤記錄元件」)。如果停用log_filter_internal
,log_error_verbosity
則不會有任何作用。預定用於錯誤記錄的事件具有
ERROR
、WARNING
或INFORMATION
的優先順序。log_error_verbosity
會根據允許寫入記錄的訊息優先順序來控制詳細程度,如下表所示。log_error_verbosity 值 允許的訊息優先順序 1 ERROR
2 ERROR
、WARNING
3 ERROR
、WARNING
、INFORMATION
還有一個
SYSTEM
的優先順序。關於非錯誤情況的系統訊息會列印到錯誤記錄,而無論log_error_verbosity
值為何。這些訊息包括啟動和關閉訊息,以及對設定的一些重大變更。log_error_verbosity
的效果會與log_error_suppression_list
的效果結合。如需更多資訊,請參閱 第 7.4.2.5 節,「基於優先順序的錯誤記錄篩選 (log_filter_internal)」。 -
命令列格式 --log-output=name
系統變數 log_output
範圍 全域 動態 是 SET_VAR
提示適用否 類型 設定 預設值 FILE
有效值 TABLE
FILE
NONE
一般查詢日誌和慢查詢日誌輸出的目的地。該值是一個列表,包含一個或多個以逗號分隔的單字,可選自
TABLE
、FILE
和NONE
。TABLE
選擇將日誌記錄到mysql
系統架構中的general_log
和slow_log
表中。FILE
選擇將日誌記錄到日誌檔案中。NONE
禁用日誌記錄。如果值中存在NONE
,則其優先於任何其他存在的單字。TABLE
和FILE
可以同時給定,以選擇兩個日誌輸出目的地。此變數選擇日誌輸出目的地,但不會啟用日誌輸出。若要啟用日誌輸出,請啟用
general_log
和slow_query_log
系統變數。對於FILE
日誌記錄,general_log_file
和slow_query_log_file
系統變數決定日誌檔案的位置。如需更多資訊,請參閱 第 7.4.1 節,「選取一般查詢日誌和慢查詢日誌輸出目的地」。 -
命令列格式 --log-queries-not-using-indexes[={OFF|ON}]
系統變數 log_queries_not_using_indexes
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果啟用此變數並且啟用了慢查詢日誌,則預期會擷取所有資料列的查詢將被記錄。請參閱 第 7.4.5 節,「慢查詢日誌」。此選項不一定表示未使用索引。例如,使用完整索引掃描的查詢會使用索引,但仍會被記錄,因為索引不會限制資料列的數量。
-
log_raw
系統變數最初設定為--log-raw
選項的值。請參閱該選項的描述以瞭解更多資訊。系統變數也可以在執行時設定,以變更密碼遮罩行為。 -
命令列格式 --log-slow-admin-statements[={OFF|ON}]
系統變數 log_slow_admin_statements
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
將慢速管理陳述式包含在寫入慢查詢日誌的陳述式中。管理陳述式包括
ALTER TABLE
、ANALYZE TABLE
、CHECK TABLE
、CREATE INDEX
、DROP INDEX
、OPTIMIZE TABLE
和REPAIR TABLE
。 -
命令列格式 --log-slow-extra[={OFF|ON}]
系統變數 log_slow_extra
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果啟用了慢查詢日誌,且輸出目的地包含
FILE
,則伺服器會將其他欄位寫入日誌檔案行,以提供有關慢速陳述式的資訊。請參閱 第 7.4.5 節,「慢查詢日誌」。TABLE
輸出不受影響。 -
命令列格式 --log-timestamps=#
系統變數 log_timestamps
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 UTC
有效值 UTC
SYSTEM
此變數控制寫入錯誤日誌中的訊息,以及寫入檔案的一般查詢日誌和慢查詢日誌訊息中的時間戳記的時區。它不影響寫入表格(
mysql.general_log
、mysql.slow_log
)的一般查詢日誌和慢查詢日誌訊息的時區。從這些表格擷取的資料列可以使用CONVERT_TZ()
從本機系統時區轉換為任何所需的時區,或者設定工作階段的time_zone
系統變數。允許的
log_timestamps
值為UTC
(預設值)和SYSTEM
(本機系統時區)。時間戳記使用 ISO 8601 / RFC 3339 格式寫入:
加上尾部值YYYY-MM-DD
Thh:mm:ss.uuuuuu
Z
表示 Zulu 時間 (UTC),或±hh:mm
(與 UTC 的偏移量)。 log_throttle_queries_not_using_indexes
命令列格式 --log-throttle-queries-not-using-indexes=#
系統變數 log_throttle_queries_not_using_indexes
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
如果啟用了
log_queries_not_using_indexes
,則log_throttle_queries_not_using_indexes
變數會限制每分鐘可以寫入慢查詢日誌的此類查詢數量。值為 0(預設值)表示 「沒有限制」。如需更多資訊,請參閱 第 7.4.5 節,「慢查詢日誌」。-
命令列格式 --long-query-time=#
系統變數 long_query_time
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 數值 預設值 10
最小值 0
最大值 31536000
單位 秒 如果查詢耗時超過此秒數,伺服器將會遞增
Slow_queries
狀態變數。如果啟用了慢查詢日誌,則查詢會被記錄到慢查詢日誌檔案中。此值以實際時間(而不是 CPU 時間)來衡量,因此在輕負載系統上低於閾值的查詢,在重負載系統上可能會高於閾值。long_query_time
的最小值和預設值分別為 0 和 10。最大值為 31536000,相當於 365 天(以秒為單位)。該值可以指定到微秒的解析度。請參閱 第 7.4.5 節,「慢查詢日誌」。此變數的值越小,則會將越多陳述式視為長時間執行,導致慢查詢日誌需要更多空間。對於非常小的值(小於一秒),日誌可能會在短時間內變得相當大。增加被視為長時間執行的陳述式數量,也可能會導致 MySQL Enterprise Monitor 中的 「過多長時間執行的處理程序」警示出現誤報,尤其是在啟用 Group Replication 的情況下。因此,非常小的值應僅在測試環境中使用,或在生產環境中僅在短時間內使用。
mysqldump 執行完整資料表掃描,這表示其查詢通常會超過對一般查詢有用的
long_query_time
設定。如果您想要將 mysqldump 產生的大部分或所有查詢排除在慢查詢日誌之外,可以使用--mysqld-long-query-time
將系統變數的工作階段值變更為較高的值。 -
命令列格式 --low-priority-updates[={OFF|ON}]
系統變數 low_priority_updates
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果設定為
1
,則所有INSERT
、UPDATE
、DELETE
和LOCK TABLE WRITE
陳述式會等待,直到受影響的資料表上沒有擱置的SELECT
或LOCK TABLE READ
為止。可以使用{INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ...
來降低單一查詢的優先順序,以取得相同的效果。此變數僅影響僅使用資料表層級鎖定的儲存引擎(例如MyISAM
、MEMORY
和MERGE
)。請參閱 第 10.11.2 節,「資料表鎖定問題」。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
系統變數 lower_case_file_system
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 此變數描述資料目錄所在檔案系統上檔案名稱的大小寫敏感度。
OFF
表示檔案名稱區分大小寫,ON
表示不區分大小寫。此變數為唯讀,因為它反映檔案系統屬性,設定它對檔案系統不會產生任何影響。 -
命令列格式 --lower-case-table-names[=#]
系統變數 lower_case_table_names
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 (macOS) 2
預設值 (Unix) 0
預設值 (Windows) 1
最小值 0
最大值 2
如果設定為 0,則資料表名稱會以指定的方式儲存,並且比較區分大小寫。如果設定為 1,則資料表名稱會以小寫形式儲存在磁碟上,並且比較不區分大小寫。如果設定為 2,則資料表名稱會以給定的方式儲存,但以小寫形式進行比較。此選項也適用於資料庫名稱和資料表別名。如需其他詳細資訊,請參閱 第 11.2.3 節,「識別項大小寫敏感度」。
此變數的預設值與平台相關(請參閱
lower_case_file_system
)。在 Linux 和其他類 Unix 系統上,預設值為0
。在 Windows 上,預設值為1
。在 macOS 上,預設值為2
。在 Linux(和其他類 Unix 系統)上,不支援將值設定為2
;伺服器會強制將值改為0
。如果您在資料目錄位於不區分大小寫的檔案系統(例如 Windows 或 macOS)的系統上執行 MySQL,則不應該將
lower_case_table_names
設定為 0。這是一種不受支援的組合,可能會在執行INSERT INTO ... SELECT ... FROM
操作時,由於tbl_name
tbl_name
的字母大小寫錯誤而導致系統停止回應。使用MyISAM
時,使用不同字母大小寫存取表格名稱可能會導致索引損壞。如果您嘗試在不區分大小寫的檔案系統上使用
--lower_case_table_names=0
來啟動伺服器,將會印出錯誤訊息並退出伺服器。此變數的設定會影響複寫篩選選項在大小寫敏感度方面的行為。如需更多資訊,請參閱第 19.2.5 節,「伺服器如何評估複寫篩選規則」。
禁止使用與伺服器初始化時不同的
lower_case_table_names
設定來啟動伺服器。此限制是必要的,因為各種資料字典表格欄位使用的定序是在初始化伺服器時定義的設定所決定的,而使用不同的設定重新啟動伺服器將會導致識別符號的排序和比較方式不一致。因此,有必要在初始化伺服器之前,將
lower_case_table_names
設定為所需的設定。在大多數情況下,這需要在第一次啟動 MySQL 伺服器之前,在 MySQL 選項檔案中設定lower_case_table_names
。然而,對於 Debian 和 Ubuntu 上的 APT 安裝,伺服器會為您初始化,因此沒有機會事先在選項檔案中設定該設定。因此,您必須在使用 APT 安裝 MySQL 之前,使用debconf-set-selection
公用程式來啟用lower_case_table_names
。為此,請在使用 APT 安裝 MySQL 之前執行此命令$> sudo debconf-set-selections <<< "mysql-server mysql-server/lowercase-table-names select Enabled"
-
命令列格式 --mandatory-roles=值
系統變數 mandatory_roles
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 空字串
伺服器應視為強制性的角色。實際上,這些角色會自動授予每個使用者,儘管設定
mandatory_roles
並不會實際變更任何使用者帳戶,而且授予的角色在mysql.role_edges
系統表格中不可見。變數值是以逗號分隔的角色名稱清單。範例
SET PERSIST mandatory_roles = '`role1`@`%`,`role2`,role3,role4@localhost';
設定
mandatory_roles
的執行階段值,除了設定全域系統變數執行階段值通常需要的SYSTEM_VARIABLES_ADMIN
權限(或已棄用的SUPER
權限)之外,還需要ROLE_ADMIN
權限。角色名稱由
格式的使用者部分和主機部分組成。如果省略主機部分,則預設為主機為user_name
@host_name
%
。如需更多資訊,請參閱第 8.2.5 節,「指定角色名稱」。mandatory_roles
值是一個字串,因此,如果使用者名稱和主機名稱被引號括住,則必須以允許在引號字串內引用的方式書寫。在
mandatory_roles
的值中命名的角色無法使用REVOKE
撤銷,也不能使用DROP ROLE
或DROP USER
刪除。為了防止工作階段預設成為系統工作階段,具有
SYSTEM_USER
權限的角色不能在mandatory_roles
系統變數的值中列出。如果在啟動時將具有
SYSTEM_USER
權限的角色指派給mandatory_roles
,伺服器會將訊息寫入錯誤記錄檔並退出。如果在執行階段將具有
SYSTEM_USER
權限的角色指派給mandatory_roles
,則會發生錯誤,且mandatory_roles
的值保持不變。
強制性角色(如明確授予的角色一樣)在啟動之前不會生效(請參閱啟動角色)。在登入時,如果啟用了
activate_all_roles_on_login
系統變數,則會啟動所有已授予的角色;否則,或對於設定為預設角色的角色則會啟動。在執行階段,SET ROLE
會啟動角色。在指派給
mandatory_roles
時不存在,但稍後建立的角色可能需要特殊處理才能被視為強制性角色。如需詳細資訊,請參閱定義強制性角色。SHOW GRANTS
會根據第 15.7.7.22 節,「SHOW GRANTS 陳述式」中所述的規則顯示強制性角色。 -
命令列格式 --max-allowed-packet=#
系統變數 max_allowed_packet
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 67108864
最小值 1024
最大值 1073741824
單位 位元組 區塊大小 1024
一個封包或任何產生/中繼字串的最大大小,或
mysql_stmt_send_long_data()
C API 函式所傳送的任何參數。預設值為 64MB。封包訊息緩衝區初始化為
net_buffer_length
位元組,但必要時可以增加到max_allowed_packet
位元組。這個值預設很小,以便捕獲大型(可能不正確)的封包。如果您使用大型的
BLOB
資料行或長字串,則必須增加這個值。它應該與您想要使用的最大BLOB
一樣大。max_allowed_packet
的協定限制為 1GB。該值應為 1024 的倍數;非倍數的值會向下捨入為最接近的倍數。當您透過變更
max_allowed_packet
變數的值來變更訊息緩衝區大小時,如果您的用戶端程式允許,您也應該變更用戶端的大小。用戶端程式庫中內建的預設max_allowed_packet
值為 1GB,但個別的用戶端程式可能會覆寫這個值。例如,mysql 和 mysqldump 的預設值分別為 16MB 和 24MB。它們也允許您透過在命令列或選項檔案中設定max_allowed_packet
來變更用戶端的值。此變數的工作階段值是唯讀的。用戶端最多可以接收與工作階段值一樣多的位元組。然而,伺服器傳送給用戶端的位元組數不會超過目前的全域
max_allowed_packet
值。(如果全域值在用戶端連線後變更,則全域值可能小於工作階段值。) -
命令列格式 --max-connect-errors=#
系統變數 max_connect_errors
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 100
最小值 1
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
如果主機連續
max_connect_errors
次連線請求中斷而未成功建立連線,伺服器會封鎖該主機的後續連線。如果主機在先前的連線中斷後,在少於max_connect_errors
次嘗試內成功建立連線,則該主機的錯誤計數會清除為零。若要解除封鎖已封鎖的主機,請清除主機快取;請參閱清除主機快取。 -
命令列格式 --max-connections=#
系統變數 max_connections
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 151
最小值 1
最大值 100000
允許的同時用戶端連線最大數目。最大有效值是
open_files_limit
- 810
的有效值與實際設定的max_connections
值中的較小者。如需更多資訊,請參閱第 7.1.12.1 節,「連線介面」。
-
命令列格式 --max-delayed-threads=#
已棄用 是 系統變數 max_delayed_threads
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 20
最小值 0
最大值 16384
此系統變數已棄用(因為不支援
DELAYED
插入),並且在未來的 MySQL 版本中可能會移除。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --max-digest-length=#
系統變數 max_digest_length
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 1024
最小值 0
最大值 1048576
單位 位元組 每個工作階段為計算標準化陳述式摘要保留的最大記憶體位元組數。一旦在摘要計算期間使用完該空間量,就會發生截斷:不會收集剖析陳述式中的其他符號,也不會將其計入摘要值中。如果剖析的符號在那麼多位元組之後才有所不同,則陳述式會產生相同的標準化陳述式摘要,並且如果比較或彙總摘要統計資料,則會被視為相同。
警告將
max_digest_length
設定為零會停用摘要產生,這也會停用需要摘要的伺服器功能,例如 MySQL Enterprise Firewall。減少
max_digest_length
值會減少記憶體使用量,但會導致更多陳述式的摘要值變得無法區分(如果它們僅在末尾有所不同)。增加該值允許區分較長的陳述式,但會增加記憶體使用量,特別是對於涉及大量同時工作階段的工作負載(伺服器為每個工作階段配置max_digest_length
個位元組)。剖析器會使用這個系統變數來限制其計算的正規化陳述式摘要的最大長度。效能結構描述 (Performance Schema) 如果追蹤陳述式摘要,會複製摘要值,並使用
performance_schema_max_digest_length
系統變數來限制其儲存的摘要最大長度。因此,如果performance_schema_max_digest_length
小於max_digest_length
,則儲存在效能結構描述中的摘要值會相對於原始摘要值被截斷。如需陳述式摘要的詳細資訊,請參閱第 29.10 節「效能結構描述陳述式摘要與取樣」。
-
命令列格式 --max-error-count=#
系統變數 max_error_count
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1024
最小值 0
最大值 65535
要儲存以供
SHOW ERRORS
和SHOW WARNINGS
陳述式顯示的錯誤、警告和資訊訊息的最大數量。這與診斷區域中的條件區域數量相同,因此也是GET DIAGNOSTICS
可以檢查的條件數量。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --max-execution-time=#
系統變數 max_execution_time
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 0
最小值 0
最大值 4294967295
單位 毫秒 SELECT
陳述式的執行逾時時間,以毫秒為單位。如果值為 0,則不會啟用逾時。max_execution_time
的適用方式如下全域
max_execution_time
值為新連線的會話值提供預設值。會話值適用於在會話中執行的SELECT
執行,這些執行不包含MAX_EXECUTION_TIME(
最佳化提示,或N
)N
為 0 的情況。max_execution_time
適用於唯讀SELECT
陳述式。非唯讀的陳述式是指那些會調用會修改資料的預存函數的陳述式 (作為副作用)。在預存程式中,
max_execution_time
會被SELECT
陳述式忽略。
-
命令列格式 --max-heap-table-size=#
系統變數 max_heap_table_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 16777216
最小值 16384
最大值(64 位元平台) 18446744073709550592
最大值(32 位元平台) 4294966272
單位 位元組 區塊大小 1024
此變數設定允許使用者建立的
MEMORY
資料表成長的最大大小。變數的值用於計算MEMORY
資料表的MAX_ROWS
值。除非使用
CREATE TABLE
等陳述式重新建立資料表,或使用ALTER TABLE
或TRUNCATE TABLE
變更資料表,否則設定此變數對任何現有的MEMORY
資料表沒有影響。伺服器重新啟動也會將現有MEMORY
資料表的最大大小設定為全域max_heap_table_size
值。此變數也與
tmp_table_size
結合使用,以限制內部記憶體資料表的大小。請參閱第 10.4.4 節「MySQL 中內部暫時資料表的使用」。max_heap_table_size
不會被複製。如需更多資訊,請參閱第 19.5.1.21 節「複製和 MEMORY 資料表」和第 19.5.1.39 節「複製和變數」。 -
已棄用 是 系統變數 max_insert_delayed_threads
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 20
最大值 16384
此變數是
max_delayed_threads
的同義詞。與max_delayed_threads
一樣,它已被棄用 (因為不支援DELAYED
插入),並將在未來的 MySQL 版本中移除。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --max-join-size=#
系統變數 max_join_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 18446744073709551615
最小值 1
最大值 18446744073709551615
這表示聯結在基本資料表中進行的行存取次數上限。如果伺服器的估計指出必須從基本資料表讀取比
max_join_size
更多的行數,則會拒絕陳述式並顯示錯誤。將此變數設定為
DEFAULT
以外的值會將sql_big_selects
的值重設為0
。如果您再次設定sql_big_selects
值,則會忽略max_join_size
變數。 -
命令列格式 --max-length-for-sort-data=#
已棄用 是 系統變數 max_length_for_sort_data
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 4096
最小值 4
最大值 8388608
單位 位元組 此變數已棄用,在 MySQL 8.4 中無效。
-
命令列格式 --max-points-in-geometry=#
系統變數 max_points_in_geometry
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 65536
最小值 3
最大值 1048576
ST_Buffer_Strategy()
函數的points_per_circle
引數最大值。 -
命令列格式 --max-prepared-stmt-count=#
系統變數 max_prepared_stmt_count
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 16382
最小值 0
最大值 4194304
此變數限制伺服器中準備好的陳述式總數。它可用於存在潛在阻斷服務攻擊的環境,這些攻擊基於準備大量陳述式而導致伺服器記憶體耗盡。如果該值設定低於目前準備好的陳述式數量,則現有的陳述式不受影響且可以使用,但直到目前的數量低於限制之前,都無法準備新的陳述式。將值設定為 0 會停用準備好的陳述式。
-
命令列格式 --max-seeks-for-key=#
系統變數 max_seeks_for_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 (Windows) 4294967295
預設值 (其他、64 位元平台) 18446744073709551615
預設值 (其他、32 位元平台) 4294967295
最小值 1
最大值 (Windows) 4294967295
最大值 (其他,64 位元平台) 18446744073709551615
最大值 (其他,32 位元平台) 4294967295
限制根據索引鍵查閱列時假設的最大搜尋次數。MySQL 最佳化工具假設在掃描索引在資料表中搜尋符合的列時,不需超過此索引鍵搜尋次數,無論索引的實際基數為何 (請參閱第 15.7.7.23 節「SHOW INDEX 陳述式」)。透過將此值設定為較低的值 (例如 100),您可以強制 MySQL 偏好索引而不是資料表掃描。
-
命令列格式 --max-sort-length=#
系統變數 max_sort_length
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1024
最小值 4
最大值 8388608
單位 位元組 排序使用
PAD SPACE
定序的字串值時要使用的位元組數。伺服器只會使用任何此類值的前max_sort_length
個位元組,並忽略其餘部分。因此,僅在前max_sort_length
個位元組之後才不同的此類值會被視為在GROUP BY
、ORDER BY
和DISTINCT
操作中相等。(此行為與舊版 MySQL 不同,舊版 MySQL 會將此設定套用至比較中使用的所有值。)增加
max_sort_length
的值可能也需要增加sort_buffer_size
的值。如需詳細資訊,請參閱第 10.2.1.16 節「ORDER BY 最佳化」。 -
命令列格式 --max-sp-recursion-depth[=#]
系統變數 max_sp_recursion_depth
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 255
任何給定預存程序可以遞迴呼叫的次數。此選項的預設值為 0,這會完全停用預存程序中的遞迴。最大值為 255。
預存程序遞迴會增加對執行緒堆疊空間的需求。如果您增加
max_sp_recursion_depth
的值,則可能需要透過在伺服器啟動時增加thread_stack
的值來增加執行緒堆疊大小。 -
命令列格式 --max-user-connections=#
系統變數 max_user_connections
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
允許任何給定 MySQL 使用者帳戶同時連線的最大數量。值為 0 (預設值) 表示 「無限制。」
此變數具有可在伺服器啟動或執行時設定的全域值。它也具有唯讀會話值,指示適用於與目前會話相關聯的帳戶的有效同時連線限制。會話值會以下列方式初始化
如果使用者帳戶具有非零的
MAX_USER_CONNECTIONS
資源限制,則會將會話max_user_connections
值設定為該限制。否則,會將會話
max_user_connections
值設定為全域值。
帳戶資源限制是使用
CREATE USER
或ALTER USER
陳述式指定。請參閱第 8.2.21 節「設定帳戶資源限制」。 -
命令列格式 --max-write-lock-count=#
系統變數 max_write_lock_count
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 (Windows) 4294967295
預設值 (其他、64 位元平台) 18446744073709551615
預設值 (其他、32 位元平台) 4294967295
最小值 1
最大值 (Windows) 4294967295
最大值 (其他,64 位元平台) 18446744073709551615
最大值 (其他,32 位元平台) 4294967295
在經過這麼多次的寫入鎖定後,允許一些等待中的讀取鎖定請求穿插處理。寫入鎖定請求的優先級高於讀取鎖定請求。但是,如果
max_write_lock_count
設定為較低的值 (例如 10),如果讀取鎖定請求已經優先於 10 個寫入鎖定請求而被跳過,則讀取鎖定請求可能會優先於等待中的寫入鎖定請求。通常這種情況不會發生,因為max_write_lock_count
預設值非常大。 -
命令列格式 --mecab-rc-file=檔案名稱
系統變數 mecab_rc_file
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 mecab_rc_file
選項用於設定 MeCab 全文解析器。mecab_rc_file
選項定義了mecabrc
設定檔的路徑,該檔案是 MeCab 的設定檔。此選項為唯讀,只能在啟動時設定。mecabrc
設定檔是初始化 MeCab 所必需的。有關 MeCab 全文解析器的資訊,請參閱第 14.9.9 節,「MeCab 全文解析器外掛程式」。
有關可以在 MeCab
mecabrc
設定檔中指定的選項資訊,請參閱 MeCab 文件,位於 Google 開發人員網站。 -
命令列格式 --min-examined-row-limit=#
系統變數 min_examined_row_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
查詢檢查的資料列數少於此數時,不會記錄到慢查詢日誌。
設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --myisam-data-pointer-size=#
系統變數 myisam_data_pointer_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 6
最小值 2
最大值 7
單位 位元組 當未指定
MAX_ROWS
選項時,CREATE TABLE
為MyISAM
資料表使用的預設指標大小(以位元組為單位)。此變數不能小於 2 或大於 7。預設值為 6。請參閱第 B.3.2.10 節,「資料表已滿」。 -
命令列格式 --myisam-max-sort-file-size=#
系統變數 myisam_max_sort_file_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 (Windows) 2146435072
預設值 (其他、64 位元平台) 9223372036853727232
預設值 (其他、32 位元平台) 2147483648
最小值 0
最大值 (Windows) 2146435072
最大值 (其他,64 位元平台) 9223372036853727232
最大值 (其他,32 位元平台) 2147483648
單位 位元組 MySQL 在重新建立
MyISAM
索引時(在REPAIR TABLE
、ALTER TABLE
或LOAD DATA
期間)允許使用的暫存檔的最大大小。如果檔案大小會大於此值,則改為使用索引快取建立索引,速度較慢。該值以位元組為單位。如果
MyISAM
索引檔超過此大小且磁碟空間可用,增加該值可能有助於效能。空間必須位於包含原始索引檔所在目錄的檔案系統中。 -
命令列格式 --myisam-mmap-size=#
系統變數 myisam_mmap_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 (64 位元平台) 18446744073709551615
預設值 (32 位元平台) 4294967295
最小值 7
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
單位 位元組 用於記憶體對應壓縮
MyISAM
檔案的最大記憶體量。如果使用許多壓縮的MyISAM
資料表,則可以減少該值以降低記憶體交換問題的可能性。 -
命令列格式 --myisam-recover-options[=list]
系統變數 myisam_recover_options
範圍 全域 動態 否 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 OFF
DEFAULT
BACKUP
FORCE
QUICK
設定
MyISAM
儲存引擎復原模式。變數值是OFF
、DEFAULT
、BACKUP
、FORCE
或QUICK
值的任意組合。如果指定多個值,請用逗號分隔。在伺服器啟動時指定不帶值的變數,與指定DEFAULT
相同,而指定明確值""
則停用復原 (與OFF
值相同)。如果啟用復原,每次 mysqld 開啟MyISAM
資料表時,它會檢查資料表是否被標記為損毀或未正確關閉。(只有在停用外部鎖定的情況下執行時,最後一個選項才有效。)如果是這種情況,mysqld 會對資料表執行檢查。如果資料表已損壞,mysqld 會嘗試修復它。以下選項會影響修復的工作方式。
選項 說明 OFF
不復原。 DEFAULT
在不備份、強制或快速檢查的情況下復原。 BACKUP
如果在復原期間變更了資料檔,請將
檔案的備份儲存為tbl_name
.MYD
。tbl_name-datetime
.BAKFORCE
即使我們會從 .MYD
檔案中遺失多個資料列,也執行復原。QUICK
如果沒有任何刪除區塊,則不要檢查資料表中的資料列。 在伺服器自動修復資料表之前,它會在錯誤日誌中寫入有關修復的註解。如果您希望能夠在不需要使用者介入的情況下從大多數問題中復原,則應使用
BACKUP,FORCE
選項。即使會刪除某些資料列,這也會強制修復資料表,但它會將舊資料檔保留為備份,以便您稍後檢查發生了什麼事。 -
命令列格式 --myisam-sort-buffer-size=#
系統變數 myisam_sort_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8388608
最小值 4096
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
單位 位元組 在
REPAIR TABLE
期間或使用CREATE INDEX
或ALTER TABLE
建立索引時,用於排序MyISAM
索引時配置的緩衝區大小。 -
命令列格式 --myisam-stats-method=名稱
系統變數 myisam_stats_method
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 nulls_unequal
有效值 nulls_unequal
nulls_equal
nulls_ignored
伺服器在收集關於
MyISAM
資料表的索引值分佈統計資料時,如何處理NULL
值。此變數有三個可能的值:nulls_equal
、nulls_unequal
和nulls_ignored
。對於nulls_equal
,所有NULL
索引值都被視為相等,並形成大小等於NULL
值數量的單個值群組。對於nulls_unequal
,NULL
值被視為不相等,每個NULL
值形成大小為 1 的不同值群組。對於nulls_ignored
,NULL
值會被忽略。用於產生資料表統計資料的方法會影響最佳化工具如何選擇用於查詢執行的索引,如第 10.3.8 節,「InnoDB 和 MyISAM 索引統計資料收集」中所述。
-
命令列格式 --myisam-use-mmap[={OFF|ON}]
系統變數 myisam_use_mmap
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
使用記憶體對應讀寫
MyISAM
資料表。 mysql_native_password_proxy_users
命令列格式 --mysql-native-password-proxy-users[={OFF|ON}]
已棄用 是 系統變數 mysql_native_password_proxy_users
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制
mysql_native_password
內建驗證外掛程式(已過時)是否支援 Proxy 使用者。除非啟用check_proxy_users
系統變數和mysql_native_password
外掛程式,否則它不會生效。有關使用者 Proxy 的資訊,請參閱第 8.2.19 節,「Proxy 使用者」。-
命令列格式 --named-pipe[={OFF|ON}]
系統變數 named_pipe
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 布林值 預設值 OFF
(僅限 Windows。)表示伺服器是否支援通過具名管道進行連線。
-
命令列格式 --named-pipe-full-access-group=值
系統變數 named_pipe_full_access_group
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 字串 預設值 空字串
有效值 空字串
有效的 Windows 本機群組名稱
*everyone*
(僅限 Windows。)當啟用
named_pipe
系統變數以支援具名管道連線時,授予用戶端在 MySQL 伺服器建立的具名管道上的存取控制權限,設定為成功通訊所需的最低權限。某些 MySQL 用戶端軟體無需任何額外設定即可開啟具名管道連線;但是,其他用戶端軟體可能仍需要完全存取權才能開啟具名管道連線。此變數設定 Windows 本機群組的名稱,MySQL 伺服器會授予該群組成員足夠的權限以使用具名管道用戶端。預設值為空字串,表示沒有任何 Windows 使用者被授予具名管道的完全存取權限。
可以在 Windows 中建立新的 Windows 本機群組名稱(例如,
mysql_access_client_users
),然後在絕對必要存取時,用此群組名稱取代預設值。在這種情況下,請將群組成員限制為盡可能少的用戶,並在用戶端軟體升級時,將用戶從群組中移除。非群組成員嘗試使用受影響的具名管道用戶端開啟與 MySQL 的連線時,會被拒絕存取,直到 Windows 管理員將該用戶新增至群組為止。新加入的用戶必須登出並重新登入才能加入群組(Windows 要求)。將值設定為
'*everyone*'
提供了一種不需考慮語言的方式,來指稱 Windows 上的 Everyone 群組。預設情況下,Everyone 群組並不安全。 -
命令列格式 --net-buffer-length=#
系統變數 net_buffer_length
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 16384
最小值 1024
最大值 1048576
單位 位元組 區塊大小 1024
每個用戶端執行緒都與一個連線緩衝區和結果緩衝區相關聯。兩者都以
net_buffer_length
指定的大小開始,但會根據需要動態放大至max_allowed_packet
個位元組。結果緩衝區在每個 SQL 陳述式之後會縮減至net_buffer_length
。這個變數通常不應變更,但如果您記憶體非常少,您可以將其設定為用戶端傳送的陳述式的預期長度。如果陳述式超過此長度,連線緩衝區會自動放大。
net_buffer_length
可以設定的最大值為 1MB。此變數的 Session 值為唯讀。
-
命令列格式 --net-read-timeout=#
系統變數 net_read_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 30
最小值 1
最大值 31536000
單位 秒 在中止讀取之前,等待從連線取得更多資料的秒數。當伺服器從用戶端讀取資料時,
net_read_timeout
是控制何時中止的逾時值。當伺服器寫入用戶端時,net_write_timeout
是控制何時中止的逾時值。另請參閱replica_net_timeout
。 -
命令列格式 --net-retry-count=#
系統變數 net_retry_count
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 1
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
如果通訊埠上的讀取或寫入被中斷,則在放棄之前,重試此次數。此值在 FreeBSD 上應設定得很高,因為內部中斷會傳送至所有執行緒。
-
命令列格式 --net-write-timeout=#
系統變數 net_write_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 60
最小值 1
最大值 31536000
單位 秒 在中止寫入之前,等待將區塊寫入連線的秒數。另請參閱
net_read_timeout
。 -
命令列格式 --ngram-token-size=#
系統變數 ngram_token_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 1
最大值 10
為 n-gram 全文剖析器定義 n-gram 符號大小。
ngram_token_size
選項為唯讀,只能在啟動時修改。預設值為 2(二元組)。最大值為 10。如需有關如何設定此變數的詳細資訊,請參閱第 14.9.8 節,〈n-gram 全文剖析器〉。
-
命令列格式 --offline-mode[={OFF|ON}]
系統變數 offline_mode
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
在離線模式中,MySQL 執行個體會中斷與用戶端的連線,除非它們具有相關的權限,並且不允許它們啟動新的連線。被拒絕存取的用戶端會收到
ER_SERVER_OFFLINE_MODE
錯誤。若要將伺服器置於離線模式,請將
offline_mode
系統變數的值從OFF
變更為ON
。若要恢復正常操作,請將offline_mode
從ON
變更為OFF
。若要控制離線模式,管理員帳戶必須具有SYSTEM_VARIABLES_ADMIN
權限和CONNECTION_ADMIN
權限(或已棄用的SUPER
權限,它涵蓋這兩種權限)。需要CONNECTION_ADMIN
,以防止意外鎖定。離線模式具有以下特性
已連線且不具有
CONNECTION_ADMIN
權限(或已棄用的SUPER
權限)的用戶端,會在下一個請求中斷連線,並顯示適當的錯誤。中斷連線包括終止正在執行的陳述式並釋放鎖定。這類用戶端也無法啟動新的連線,並會收到適當的錯誤。已連線且具有
CONNECTION_ADMIN
或SUPER
權限的用戶端,不會中斷連線,並且可以啟動新的連線來管理伺服器。如果將伺服器置於離線模式的使用者不具有
SYSTEM_USER
權限,則已連線且具有SYSTEM_USER
權限的用戶端也不會中斷連線。但是,這些用戶無法在伺服器處於離線模式時啟動與伺服器的新連線,除非它們也具有CONNECTION_ADMIN
或SUPER
權限。只有它們現有的連線無法終止,因為需要SYSTEM_USER
權限來終止以SYSTEM_USER
權限執行的工作階段或陳述式。允許複寫執行緒繼續將資料套用至伺服器。
-
命令列格式 --old-alter-table[={OFF|ON}]
系統變數 old_alter_table
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
啟用此變數時,伺服器不會使用處理
ALTER TABLE
操作的已最佳化方法。它會回復為使用暫存表格、複製資料,然後將暫存表格重新命名為原始表格,如同 MySQL 5.0 和更早版本所使用的。如需有關ALTER TABLE
操作的詳細資訊,請參閱第 15.1.9 節,〈ALTER TABLE 陳述式〉。使用
old_alter_table=ON
的ALTER TABLE ... DROP PARTITION
會重建已分割的表格,並嘗試將已卸除分割區的資料移至另一個具有相容PARTITION ... VALUES
定義的分割區。無法移至另一個分割區的資料會被刪除。在先前的版本中,使用old_alter_table=ON
的ALTER TABLE ... DROP PARTITION
會刪除儲存在分割區中的資料並卸除分割區。 -
命令列格式 --open-files-limit=#
系統變數 open_files_limit
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 5000,可能會調整
最小值 0
最大值 與平台相關
作業系統可提供給 mysqld 的檔案描述器數量
在啟動時,mysqld 會使用
setrlimit()
保留描述器,並使用透過直接設定此變數或使用--open-files-limit
選項來 mysqld_safe 所要求的值。如果 mysqld 產生錯誤開啟的檔案過多
,請嘗試增加open_files_limit
值。在內部,此變數的最大值為最大不帶正負號的整數值,但實際最大值與平台相關。在執行階段,
open_files_limit
的值表示作業系統實際允許 mysqld 的檔案描述器數量,這可能與啟動時要求的值不同。如果在啟動期間要求的檔案描述器數量無法配置,mysqld 會將警告寫入錯誤記錄檔。
有效的
open_files_limit
值基於在系統啟動時指定的值(如果有的話),以及max_connections
和table_open_cache
的值,並使用以下公式10 + max_connections + (table_open_cache * 2)
。使用這些變數的預設值會產生 8161。僅在 Windows 上,此數字會加上 2048(C 執行階段程式庫檔案描述器上限的值)。再次使用指示的系統變數的預設值,總計為 10209。
max_connections * 5
作業系統限制。
伺服器會嘗試使用這些值的最大值來取得檔案描述器數量,上限為最大不帶正負號的整數值。如果無法取得那麼多描述器,伺服器會嘗試取得系統允許的數量。
在 MySQL 無法變更開啟的檔案數量的系統上,有效值為 0。
在 Unix 上,該值不能設定為大於 ulimit -n 命令所顯示的值。在使用
systemd
的 Linux 系統上,該值不能設定為大於LimitNOFILE
(如果未設定LimitNOFILE
,則為DefaultLimitNOFILE
);否則,在 Linux 上,open_files_limit
的值不能超過 ulimit -n。 -
命令列格式 --optimizer-prune-level=#
系統變數 optimizer_prune_level
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1
最小值 0
最大值 1
控制查詢最佳化期間套用的啟發式方法,以從最佳化工具搜尋空間中修剪掉較不具前景的部分計畫。值為 0 會停用啟發式方法,以便最佳化工具執行詳盡的搜尋。值為 1 會導致最佳化工具根據中間計畫擷取的列數來修剪計畫。
-
命令列格式 --optimizer-search-depth=#
系統變數 optimizer_search_depth
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 62
最小值 0
最大值 62
查詢最佳化工具執行的最大搜尋深度。大於查詢中關聯數目的值會產生較佳的查詢計畫,但產生查詢的執行計畫需要更長的時間。小於查詢中關聯數目的值會更快地傳回執行計畫,但產生的計畫可能遠非最佳。如果設定為 0,系統會自動選取合理的值。
-
命令列格式 --optimizer-switch=值
系統變數 optimizer_switch
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 設定 有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_condition_pushdown={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
hash_join={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
prefer_ordering_index={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
subquery_to_derived={on|off}
use_index_extensions={on|off}
use_invisible_indexes={on|off}
有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
hash_join={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
prefer_ordering_index={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
subquery_to_derived={on|off}
use_index_extensions={on|off}
use_invisible_indexes={on|off}
有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
hash_join={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
use_index_extensions={on|off}
use_invisible_indexes={on|off}
有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
use_index_extensions={on|off}
use_invisible_indexes={on|off}
optimizer_switch
系統變數可讓您控制最佳化工具的行為。此變數的值是一組旗標,每個旗標的值為on
或off
,表示是否啟用或停用對應的最佳化工具行為。此變數具有全域和工作階段值,並且可以在執行時變更。全域預設值可以在伺服器啟動時設定。若要查看目前最佳化工具旗標的設定,請選取變數值
mysql> SELECT @@optimizer_switch\G *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on, index_merge_sort_union=on,index_merge_intersection=on, engine_condition_pushdown=on,index_condition_pushdown=on, mrr=on,mrr_cost_based=on,block_nested_loop=on, batched_key_access=off,materialization=on,semijoin=on, loosescan=on,firstmatch=on,duplicateweedout=on, subquery_materialization_cost_based=on, use_index_extensions=on,condition_fanout_filter=on, derived_merge=on,use_invisible_indexes=off,skip_scan=on, hash_join=on,subquery_to_derived=off, prefer_ordering_index=on,hypergraph_optimizer=off, derived_condition_pushdown=on,hash_set_operations=on 1 row in set (0.00 sec)
有關此變數的語法及其控制的最佳化工具行為的詳細資訊,請參閱第 10.9.2 節,「可切換的最佳化」。
-
命令列格式 --optimizer-trace=值
系統變數 optimizer_trace
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數控制最佳化工具追蹤。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具。
-
命令列格式 --optimizer-trace-features=值
系統變數 optimizer_trace_features
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數啟用或停用選定的最佳化工具追蹤功能。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具。
-
命令列格式 --optimizer-trace-limit=#
系統變數 optimizer_trace_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1
最小值 0
最大值 2147483647
要顯示的最佳化工具追蹤的最大數量。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具。
-
命令列格式 --optimizer-trace-max-mem-size=#
系統變數 optimizer_trace_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1048576
最小值 0
最大值 4294967295
單位 位元組 儲存的最佳化工具追蹤的最大累計大小。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具。
-
命令列格式 --optimizer-trace-offset=#
系統變數 optimizer_trace_offset
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
最小值 -2147483647
最大值 2147483647
要顯示的最佳化工具追蹤的偏移量。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具。
performance_schema_
xxx
效能架構系統變數列於第 29.15 節,「效能架構系統變數」中。這些變數可以用來配置效能架構的操作。
-
命令列格式 --parser-max-mem-size=#
系統變數 parser_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 (64 位元平台) 18446744073709551615
預設值 (32 位元平台) 4294967295
最小值 10000000
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
單位 位元組 剖析器可用的最大記憶體量。預設值不會限制可用的記憶體。可以減少該值以防止剖析長或複雜的 SQL 語句所導致的記憶體不足情況。
-
命令列格式 --partial-revokes[={OFF|ON}]
系統變數 partial_revokes
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
(如果不存在部分撤銷)ON
(如果存在部分撤銷)啟用此變數可以部分撤銷權限。具體來說,對於具有全域層級權限的使用者,
partial_revokes
可讓特定結構描述的權限被撤銷,同時讓其他結構描述的權限保持不變。例如,具有全域UPDATE
權限的使用者可能會被限制在mysql
系統結構描述上執行此權限。(或者,換句話說,使用者可以對除了mysql
結構描述之外的所有結構描述執行UPDATE
權限。)從這個意義上來說,使用者的全域UPDATE
權限會被部分撤銷。一旦啟用,如果任何帳戶具有權限限制,則無法停用
partial_revokes
。如果存在任何此類帳戶,則停用partial_revokes
會失敗對於在啟動時嘗試停用
partial_revokes
的情況,伺服器會記錄錯誤訊息並啟用partial_revokes
。對於在執行時嘗試停用
partial_revokes
的情況,會發生錯誤,且partial_revokes
值保持不變。
若要在此情況下停用
partial_revokes
,請先修改每個具有部分撤銷權限的帳戶,方法是重新授予權限或移除該帳戶。注意在權限指派中,啟用
partial_revokes
會導致 MySQL 將結構描述名稱中未跳脫的_
和%
SQL 萬用字元解譯為文字字元,就像它們已跳脫為\_
和\%
一樣。因為這會變更 MySQL 解譯權限的方式,因此建議在可能啟用partial_revokes
的安裝中,避免在權限指派中使用未跳脫的萬用字元。此外,不建議在授權中使用
_
和%
作為萬用字元,您應該預期在未來版本的 MySQL 中會移除對它們的支援。有關更多資訊,包括移除部分撤銷的說明,請參閱第 8.2.12 節,「使用部分撤銷限制權限」。
-
命令列格式 --password-history=#
系統變數 password_history
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
此變數根據要求的最低密碼變更次數,定義控制重複使用先前密碼的全域原則。對於先前使用的帳戶密碼,此變數表示在密碼可以重複使用之前必須發生的後續帳戶密碼變更次數。如果值為 0(預設值),則不會根據密碼變更次數進行重複使用限制。
對此變數的變更會立即套用至所有使用
PASSWORD HISTORY DEFAULT
選項定義的帳戶。全域變更次數密碼重複使用原則可以針對個別帳戶使用
CREATE USER
和ALTER USER
陳述式的PASSWORD HISTORY
選項來覆寫。請參閱第 8.2.15 節,「密碼管理」。 -
命令列格式 --password-require-current[={OFF|ON}]
系統變數 password_require_current
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數定義全域原則,用於控制嘗試變更帳戶密碼時是否必須指定要取代的目前密碼。
對此變數的變更會立即套用至所有使用
PASSWORD REQUIRE CURRENT DEFAULT
選項定義的帳戶。全域需要驗證原則可以針對個別帳戶使用
CREATE USER
和ALTER USER
陳述式的PASSWORD REQUIRE
選項來覆寫。請參閱第 8.2.15 節,「密碼管理」。 -
命令列格式 --password-reuse-interval=#
系統變數 password_reuse_interval
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
單位 天 此變數根據經過的時間定義控制重複使用先前密碼的全域原則。對於先前使用的帳戶密碼,此變數表示在密碼可以重複使用之前必須經過的天數。如果值為 0(預設值),則不會根據經過的時間進行重複使用限制。
對此變數的變更會立即套用至所有使用
PASSWORD REUSE INTERVAL DEFAULT
選項定義的帳戶。全域經過時間的密碼重複使用原則可以針對個別帳戶使用
CREATE USER
和ALTER USER
陳述式的PASSWORD REUSE INTERVAL
選項來覆寫。請參閱第 8.2.15 節,「密碼管理」。 -
命令列格式 --persisted-globals-load[={OFF|ON}]
系統變數 persisted_globals_load
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
是否從資料目錄中的
mysqld-auto.cnf
檔案載入保存的配置設定。伺服器通常會在啟動時處理此檔案,在所有其他選項檔案之後(請參閱第 6.2.2.2 節,「使用選項檔案」)。停用persisted_globals_load
會導致伺服器啟動順序跳過mysqld-auto.cnf
。若要修改
mysqld-auto.cnf
的內容,請使用SET PERSIST
、SET PERSIST_ONLY
和RESET PERSIST
陳述式。請參閱第 7.1.9.3 節,「保存的系統變數」。 persist_only_admin_x509_subject
命令列格式 --persist-only-admin-x509-subject=字串
系統變數 persist_only_admin_x509_subject
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 空字串
SET PERSIST
和SET PERSIST_ONLY
允許將系統變數持久化到資料目錄中的mysqld-auto.cnf
選項檔案(請參閱 第 15.7.6.1 節,「SET 變數設定語法」)。持久化系統變數可以實現影響後續伺服器重新啟動的執行階段組態變更,這對於不需要直接存取 MySQL 伺服器主機選項檔案的遠端管理非常方便。但是,某些系統變數是不可持久化的,或者只能在某些限制條件下持久化。persist_only_admin_x509_subject
系統變數指定使用者必須擁有的 SSL 憑證 X.509 Subject 值,才能夠持久化受限的系統變數。預設值為空字串,這會停用 Subject 檢查,因此任何使用者都無法持久化受限的系統變數。如果
persist_only_admin_x509_subject
不為空,則使用加密連線連線到伺服器並提供具有指定 Subject 值的 SSL 憑證的使用者,可以使用SET PERSIST_ONLY
來持久化受限的系統變數。有關受限的系統變數以及設定 MySQL 以啟用persist_only_admin_x509_subject
的說明,請參閱 第 7.1.9.4 節,「不可持久化和受限的系統變數」。persist_sensitive_variables_in_plaintext
命令列格式 --persist_sensitive_variables_in_plaintext[={OFF|ON}]
系統變數 persist_sensitive_variables_in_plaintext
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果在使用
SET PERSIST
設定系統變數的值時,金鑰環元件支援不可用,persist_sensitive_variables_in_plaintext
會控制是否允許伺服器以未加密的格式儲存敏感系統變數的值。它還控制在加密值無法解密時,伺服器是否可以啟動。請注意,金鑰環外掛程式不支援安全儲存敏感系統變數;必須在 MySQL 伺服器實例上啟用金鑰環元件(請參閱 第 8.4.4 節,「MySQL 金鑰環」)以支援安全儲存。預設設定
ON
會在金鑰環元件支援可用的情況下加密這些值,如果不可用則會以未加密的方式持久化這些值(並發出警告)。下次設定任何持久化的系統變數時,如果當時金鑰環支援可用,伺服器會加密任何未加密的敏感系統變數的值。ON
設定也允許伺服器在無法解密加密的系統變數值時啟動,在這種情況下會發出警告,並使用系統變數的預設值。在這種情況下,直到可以解密這些值之前,都無法變更這些值。最安全的設定
OFF
表示如果金鑰環元件支援不可用,則無法持久化敏感系統變數的值。OFF
設定也表示如果無法解密加密的系統變數值,則伺服器不會啟動。如需詳細資訊,請參閱持久化敏感系統變數。
-
伺服器寫入其程序 ID 的檔案路徑名稱。除非提供絕對路徑名稱以指定不同的目錄,否則伺服器會在資料目錄中建立檔案。如果您指定此變數,則必須指定一個值。如果您未指定此變數,MySQL 會使用預設值
,其中host_name
.pidhost_name
是主機的名稱。其他程式(例如 mysqld_safe)會使用程序 ID 檔案來判斷伺服器的程序 ID。在 Windows 上,此變數也會影響預設的錯誤日誌檔案名稱。請參閱 第 7.4.2 節,「錯誤日誌」。
-
命令列格式 --plugin-dir=目錄名稱
系統變數 plugin_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 預設值 BASEDIR/lib/plugin
外掛程式目錄的路徑名稱。
如果伺服器可以寫入外掛程式目錄,則使用者可能會使用
SELECT ... INTO DUMPFILE
將可執行程式碼寫入目錄中的檔案。可以藉由將plugin_dir
設定為對伺服器唯讀,或將secure_file_priv
設定為可以安全地進行SELECT
寫入的目錄來防止這種情況發生。 -
伺服器接聽 TCP/IP 連線的埠號。可以使用
--port
選項設定此變數。 -
命令列格式 --preload-buffer-size=#
系統變數 preload_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 32768
最小值 1024
最大值 1073741824
單位 位元組 預先載入索引時所配置的緩衝區大小。
設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --print-identified-with-as-hex[={OFF|ON}]
系統變數 print_identified_with_as_hex
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
從
SHOW CREATE USER
輸出的IDENTIFIED WITH
子句中顯示的密碼雜湊值可能包含不可列印的字元,這些字元會對終端顯示和其他環境產生不利影響。啟用print_identified_with_as_hex
會使SHOW CREATE USER
將此類雜湊值顯示為十六進位字串,而不是顯示為一般的字串文字。即使啟用此變數,不包含不可列印字元的雜湊值仍然會顯示為一般的字串文字。 如果設定為 0 或
OFF
(預設值),則會停用陳述式分析。如果設定為 1 或ON
,則會啟用陳述式分析,並且SHOW PROFILE
和SHOW PROFILES
陳述式會提供對分析資訊的存取權。請參閱 第 15.7.7.32 節,「SHOW PROFILES 陳述式」。此變數已過時;預計會在未來的 MySQL 版本中移除。
如果啟用
profiling
,則要維護分析資訊的陳述式數量。預設值為 15。最大值為 100。將值設定為 0 實際上會停用分析。請參閱 第 15.7.7.32 節,「SHOW PROFILES 陳述式」。此變數已過時;預計會在未來的 MySQL 版本中移除。
protocol_compression_algorithms
命令列格式 --protocol-compression-algorithms=值
系統變數 protocol_compression_algorithms
範圍 全域 動態 是 SET_VAR
提示適用否 類型 設定 預設值 zlib,zstd,uncompressed
有效值 zlib
zstd
uncompressed
伺服器允許用於傳入連線的壓縮演算法。這些包括用戶端程式的連線,以及參與來源/複本複寫或群組複寫的伺服器。壓縮不適用於
FEDERATED
資料表的連線。protocol_compression_algorithms
不控制 X Protocol 的連線壓縮。請參閱 第 22.5.5 節,「使用 X 外掛程式的連線壓縮」,以瞭解其運作方式。變數值是以逗號分隔的一個或多個壓縮演算法名稱清單,順序不限,從下列項目中選擇(不區分大小寫):
zlib
:允許使用zlib
壓縮演算法的連線。zstd
:允許使用zstd
壓縮演算法的連線。uncompressed
:允許未壓縮的連線。如果此演算法名稱未包含在protocol_compression_algorithms
值中,則伺服器不允許未壓縮的連線。它只允許使用值中指定的其他演算法的壓縮連線,並且不會回退到未壓縮的連線。
zlib,zstd,uncompressed
的預設值表示伺服器允許所有壓縮演算法。如需詳細資訊,請參閱 第 6.2.8 節,「連線壓縮控制」。
-
系統變數 protocol_version
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 0
最大值 4294967295
MySQL 伺服器使用的用戶端/伺服器協定版本。
-
系統變數 proxy_user
範圍 工作階段 動態 否 SET_VAR
提示適用否 類型 字串 如果目前的用戶端是另一個使用者的 Proxy,則此變數是 Proxy 使用者帳戶名稱。否則,此變數為
NULL
。請參閱 第 8.2.19 節,「Proxy 使用者」。 -
系統變數 pseudo_replica_mode
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 pseudo_replica_mode
供伺服器內部使用。它協助正確處理源自比目前處理它們的伺服器更舊或更新伺服器的交易。mysqlbinlog 在執行任何 SQL 陳述式之前,會將pseudo_replica_mode
的值設定為 true。設定
pseudo_replica_mode
的工作階段值是受限制的操作。工作階段使用者必須具有REPLICATION_APPLIER
權限(請參閱第 19.3.3 節,「複製權限檢查」),或具有足夠的權限來設定受限制的工作階段變數(請參閱第 7.1.9.1 節,「系統變數權限」)。但是,請注意,此變數並非供使用者設定;它是由複製基礎架構自動設定。pseudo_replica_mode
對於處理準備好的 XA 交易具有以下影響,這些交易可以附加或分離至處理工作階段(預設情況下,為發出XA START
的工作階段)如果為 true,且處理工作階段已執行內部使用的
BINLOG
陳述式,則 XA 交易會在交易的第一部分完成直到XA PREPARE
時自動從工作階段分離,因此任何具有XA_RECOVER_ADMIN
權限的工作階段都可以認可或回復它們。如果為 false,則 XA 交易會保持附加至處理工作階段,只要該工作階段處於活動狀態,在此期間,沒有其他工作階段可以認可該交易。只有在工作階段斷線或伺服器重新啟動時,準備好的交易才會分離。
pseudo_replica_mode
對於original_commit_timestamp
複製延遲時間戳記和original_server_version
系統變數具有以下影響如果為 true,則未明確設定
original_commit_timestamp
或original_server_version
的交易會假設源自另一個未知的伺服器,因此會將值 0(表示未知)指派給時間戳記和系統變數。如果為 false,則未明確設定
original_commit_timestamp
或original_server_version
的交易會假設源自目前的伺服器,因此會將目前的時間戳記和目前伺服器的版本指派給時間戳記和系統變數。
pseudo_replica_mode
對於處理設定一個或多個不支援(已移除或未知)SQL 模式的陳述式具有以下影響如果為 true,則伺服器會忽略不支援的模式並引發警告。
如果為 false,則伺服器會拒絕該陳述式,並顯示
ER_UNSUPPORTED_SQL_MODE
。
-
已棄用 是 系統變數 pseudo_slave_mode
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 pseudo_replica_mode
的已棄用別名。 -
系統變數 pseudo_thread_id
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2147483647
最小值 0
最大值 2147483647
此變數供伺服器內部使用。
警告變更
pseudo_thread_id
系統變數的工作階段值會變更CONNECTION_ID()
函數傳回的值。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --query-alloc-block-size=#
系統變數 query_alloc_block_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 1024
最大值 4294966272
單位 位元組 區塊大小 1024
在陳述式剖析和執行期間建立的物件所配置的記憶體區塊配置大小(以位元組為單位)。如果您有記憶體片段的問題,增加此參數可能會有所幫助。
位元組數的區塊大小為 1024。在儲存系統變數的值之前,MySQL 伺服器會將不是區塊大小確切倍數的值捨去為下一個較小的區塊大小倍數。剖析器允許的值上限為平台的最大無號整數值(32 位元系統為 4294967295 或 232−1,64 位元系統為 18446744073709551615 或 264−1),但實際最大值是較低的區塊大小。
-
命令列格式 --query-prealloc-size=#
已棄用 是 系統變數 query_prealloc_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 8192
最大值(64 位元平台) 18446744073709550592
最大值(32 位元平台) 4294966272
單位 位元組 區塊大小 1024
query_prealloc_size
已棄用,設定它沒有任何效果;您應該預期它會在 MySQL 的未來版本中移除。 -
系統變數 rand_seed1
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 不適用
最小值 0
最大值 4294967295
rand_seed1
和rand_seed2
變數僅作為工作階段變數存在,且可以設定但不能讀取。這些變數(但不是它們的值)會顯示在SHOW VARIABLES
的輸出中。這些變數的目的是支援複製
RAND()
函數。對於呼叫RAND()
的陳述式,來源會將兩個值傳遞給複本,這些值會用於設定亂數產生器的種子。複本會使用這些值來設定工作階段變數rand_seed1
和rand_seed2
,以便複本上的RAND()
產生與來源上相同的值。 請參閱
rand_seed1
的說明。-
命令列格式 --range-alloc-block-size=#
系統變數 range_alloc_block_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 4096
最小值 4096
最大值(64 位元平台) 18446744073709550592
最大值 4294966272
單位 位元組 區塊大小 1024
在執行範圍最佳化時配置的區塊大小(以位元組為單位)。
位元組數的區塊大小為 1024。在儲存系統變數的值之前,MySQL 伺服器會將不是區塊大小確切倍數的值捨去為下一個較小的區塊大小倍數。剖析器允許的值上限為平台的最大無號整數值(32 位元系統為 4294967295 或 232−1,64 位元系統為 18446744073709551615 或 264−1),但實際最大值是較低的區塊大小。
-
命令列格式 --range-optimizer-max-mem-size=#
系統變數 range_optimizer_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8388608
最小值 0
最大值 18446744073709551615
單位 位元組 範圍最佳化工具的記憶體耗用限制。值 0 表示「無限制。」如果最佳化工具考量的執行計畫使用範圍存取方法,但最佳化工具估計此方法所需的記憶體量將超過限制,則它會放棄該計畫並考量其他計畫。如需詳細資訊,請參閱限制範圍最佳化的記憶體使用量。
-
系統變數 rbr_exec_mode
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 STRICT
有效值 STRICT
IDEMPOTENT
供 mysqlbinlog 內部使用。此變數會在
IDEMPOTENT
模式和STRICT
模式之間切換伺服器。IDEMPOTENT
模式會導致抑制 mysqlbinlog 產生的BINLOG
陳述式中的重複索引鍵和找不到索引鍵錯誤。當在會導致與現有資料衝突的伺服器上重新播放以列為基礎的二進位日誌時,此模式很有用。當您藉由將以下內容寫入輸出時指定--idempotent
選項時,mysqlbinlog 會設定此模式SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
-
命令列格式 --read-buffer-size=#
系統變數 read_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 131072
最小值 8192
最大值 2147479552
單位 位元組 區塊大小 4096
每個對
MyISAM
資料表執行循序掃描的執行緒,都會為它掃描的每個資料表配置此大小(以位元組為單位)的緩衝區。如果您執行許多循序掃描,您可能會想要增加此值,其預設值為 131072。此變數的值應該是 4KB 的倍數。如果將它設定為不是 4KB 倍數的值,則其值會捨去為最接近 4KB 的倍數。除了
InnoDB
之外,所有其他儲存引擎在以下情況下也使用此選項:在暫存檔案中快取索引(而不是暫存資料表),在排序
ORDER BY
的資料列時。用於大量插入分割區。
用於快取巢狀查詢的結果。
read_buffer_size
也以另一種儲存引擎特定的方式使用:決定MEMORY
資料表的記憶體區塊大小。select_into_buffer_size
用於SELECT INTO DUMPFILE
和SELECT INTO OUTFILE
陳述式的 I/O 快取緩衝區。(在所有其他情況下,read_buffer_size
用於 I/O 快取緩衝區大小。)如需不同操作期間記憶體使用量的詳細資訊,請參閱第 10.12.3.1 節,「MySQL 如何使用記憶體」。
-
如果啟用了
read_only
系統變數,伺服器將不允許任何用戶端更新,除非使用者擁有CONNECTION_ADMIN
權限 (或是已棄用的SUPER
權限)。此變數預設為停用。伺服器也支援
super_read_only
系統變數 (預設為停用),此變數有以下影響如果啟用
super_read_only
,伺服器會禁止用戶端更新,即使是擁有CONNECTION_ADMIN
或SUPER
權限的使用者也不例外。將
super_read_only
設定為ON
會隱式地強制將read_only
設定為ON
。將
read_only
設定為OFF
會隱式地強制將super_read_only
設定為OFF
。
當啟用
read_only
且啟用super_read_only
時,伺服器仍然允許以下操作如果伺服器是副本,則允許由複寫執行緒執行的更新。在複寫設定中,啟用副本伺服器上的
read_only
會很有用,以確保副本僅接受來自來源伺服器的更新,而不是來自用戶端的更新。寫入系統資料表
mysql.gtid_executed
,該資料表儲存目前二進位日誌檔案中不存在的已執行交易的 GTID。使用
ANALYZE TABLE
或OPTIMIZE TABLE
陳述式。唯讀模式的目的是防止變更資料表結構或內容。分析和最佳化不屬於此類變更。這表示,例如,可以使用 mysqlcheck--all-databases
--analyze
在唯讀副本上執行一致性檢查。使用
FLUSH STATUS
陳述式,這些陳述式始終會寫入二進位日誌。對
TEMPORARY
資料表的操作。插入日誌資料表 (
mysql.general_log
和mysql.slow_log
);請參閱 第 7.4.1 節,「選擇一般查詢日誌和慢速查詢日誌輸出目的地」。更新效能綱要資料表,例如
UPDATE
或TRUNCATE TABLE
操作。
在複寫來源伺服器上對
read_only
的變更不會複寫到副本伺服器。可以在副本上獨立於來源上的設定來設定值。以下條件適用於嘗試啟用
read_only
(包括啟用super_read_only
所導致的隱式嘗試)如果您有任何明確鎖定 (使用
LOCK TABLES
取得) 或有未完成的交易,則嘗試會失敗並發生錯誤。當其他用戶端有任何正在進行的陳述式、作用中的
LOCK TABLES WRITE
或正在進行的 commit 時,嘗試會被封鎖,直到鎖定解除且陳述式和交易結束。當啟用read_only
的嘗試正在等待時,其他用戶端對資料表鎖定或開始交易的要求也會被封鎖,直到設定read_only
為止。如果存在持有中繼資料鎖定的作用中交易,則嘗試會被封鎖,直到這些交易結束。
當您持有全域唯讀鎖定 (使用
FLUSH TABLES WITH READ LOCK
取得) 時,可以啟用read_only
,因為這不涉及資料表鎖定。
-
命令列格式 --read-rnd-buffer-size=#
系統變數 read_rnd_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 262144
最小值 1
最大值 2147483647
單位 位元組 此變數用於從
MyISAM
資料表讀取,以及用於任何儲存引擎的多範圍讀取最佳化。當在金鑰排序操作之後,以排序順序從
MyISAM
資料表讀取資料列時,會透過此緩衝區讀取資料列,以避免磁碟搜尋。請參閱 第 10.2.1.16 節,「ORDER BY 最佳化」。將此變數設定為較大的值可以大幅提高ORDER BY
的效能。但是,這是為每個用戶端配置的緩衝區,因此不應將全域變數設定為較大的值。相反地,僅應從需要執行大型查詢的那些用戶端變更工作階段變數。如需有關不同操作期間記憶體使用情況的詳細資訊,請參閱 第 10.12.3.1 節,「MySQL 如何使用記憶體」。如需有關多範圍讀取最佳化的資訊,請參閱 第 10.2.1.11 節,「多範圍讀取最佳化」。
-
命令列格式 --regexp-stack-limit=#
系統變數 regexp_stack_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8000000
最小值 0
最大值 2147483647
單位 位元組 用於執行由
REGEXP_LIKE()
和類似函數執行之正規表示式比對操作的內部堆疊可用的最大記憶體 (以位元組為單位) (請參閱 第 14.8.2 節,「正規表示式」)。 -
命令列格式 --regexp-time-limit=#
系統變數 regexp_time_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 32
最小值 0
最大值 2147483647
由
REGEXP_LIKE()
和類似函數執行的正規表示式比對操作的時間限制 (請參閱 第 14.8.2 節,「正規表示式」)。此限制表示為比對引擎執行的最大允許步驟數,因此僅間接影響執行時間。通常,它大約在毫秒級別。 -
系統變數 require_row_format
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數供複寫和 mysqlbinlog 的內部伺服器使用。它將工作階段中執行的 DML 事件限制為僅以列為基礎的二進位記錄格式編碼的事件,而且無法建立暫存資料表。不遵守限制的查詢會失敗。
將此系統變數的工作階段值設定為
ON
不需要任何權限。將此系統變數的工作階段值設定為OFF
是一種受限制的操作,且工作階段使用者必須具有設定受限制工作階段變數的足夠權限。請參閱 第 7.1.9.1 節,「系統變數權限」。 -
命令列格式 --require-secure-transport[={OFF|ON}]
系統變數 require_secure_transport
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否需要用戶端連線到伺服器以使用某種形式的安全傳輸。當啟用此變數時,伺服器僅允許使用 TLS/SSL 加密的 TCP/IP 連線,或使用通訊端檔案 (在 Unix 上) 或共用記憶體 (在 Windows 上) 的連線。伺服器會拒絕不安全的連線嘗試,這些嘗試會失敗並出現
ER_SECURE_TRANSPORT_REQUIRED
錯誤。此功能補充了每個帳戶的 SSL 需求,這些需求優先。例如,如果使用
REQUIRE SSL
定義帳戶,則啟用require_secure_transport
不會讓您可以使用 Unix 通訊端檔案連線來使用該帳戶。伺服器有可能沒有可用的安全傳輸。例如,如果伺服器在 Windows 上啟動時未指定任何 SSL 憑證或金鑰檔案,且停用
shared_memory
系統變數,則該伺服器不支援任何安全傳輸。在這些情況下,嘗試在啟動時啟用require_secure_transport
會導致伺服器將訊息寫入錯誤日誌並結束。嘗試在執行階段啟用變數會失敗並出現ER_NO_SECURE_TRANSPORTS_CONFIGURED
錯誤。另請參閱 將加密連線設定為強制性。
restrict_fk_on_non_standard_key
命令列格式 --restrict-fk-on-non-standard-key
已棄用 是 系統變數 restrict_fk_on_non_standard_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
此變數在
ON
(預設值) 時,會防止將非唯一金鑰或部分金鑰用作外來金鑰。若要允許在目前工作階段中使用此類金鑰作為外來金鑰,請使用SET @@session.restrict_fk_on_non_standard_key=OFF
;若要允許全域使用,請設定全域變數或使用--skip-restrict-fk-on-non-standard-key
啟動伺服器。在
CREATE TABLE
或ALTER TABLE
陳述式中使用非唯一或部分金鑰作為外來金鑰已棄用,您應該預期在未來的 MySQL 版本中將移除對它的支援。當restrict_fk_on_non_standard_key
為ON
時,嘗試執行此動作會因ER_FK_NO_INDEX_PARENT
而遭到拒絕;當它為OFF
時,允許此使用方式,但仍會引發ER_WARN_DEPRECATED_NON_STANDARD_KEY
作為警告。restrict_fk_on_non_standard_key
已棄用,並在未來的 MySQL 版本中移除。設定它會引發棄用警告。對 MySQL 複製的影響。 當主伺服器上因為
restrict_fk_on_non_standard_key
設定為OFF
而在非標準鍵上建立外鍵時,無論複本上的此變數設定為何,此敘述都會在複本上成功執行。-
系統變數 resultset_metadata
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 FULL
有效值 FULL
NONE
對於元數據傳輸為可選的連線,客戶端設定
resultset_metadata
系統變數來控制伺服器是否傳回結果集元數據。允許的值為FULL
(傳回所有元數據;這是預設值)和NONE
(不傳回元數據)。對於非元數據可選的連線,將
resultset_metadata
設定為NONE
會產生錯誤。有關管理結果集元數據傳輸的詳細資訊,請參閱選用結果集元數據。
secondary_engine_cost_threshold
系統變數 secondary_engine_cost_threshold
範圍 工作階段 動態 是 SET_VAR
提示適用是 類型 數值 預設值 100000.000000
最小值 0
最大值 DBL_MAX(最大雙精度值)
將查詢卸載至輔助引擎的優化器成本閾值。
用於 HeatWave。請參閱HeatWave 使用者指南。
-
命令列格式 --schema-definition-cache=#
系統變數 schema_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 256
最大值 524288
定義可以保留在字典物件快取中的架構定義物件(無論已使用或未使用)的數量限制。
只有當正在使用的數量少於
schema_definition_cache
定義的容量時,未使用的架構定義物件才會保留在字典物件快取中。設定為
0
表示架構定義物件只會在它們被使用時保留在字典物件快取中。如需更多資訊,請參閱第 16.4 節「字典物件快取」。
-
命令列格式 --secure-file-priv=dir_name
系統變數 secure_file_priv
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 平台特定
有效值 空字串
dirname
NULL
此變數用於限制資料匯入和匯出操作的影響,例如由
LOAD DATA
和SELECT ... INTO OUTFILE
陳述式以及LOAD_FILE()
函數執行的操作。這些操作僅允許具有FILE
權限的使用者執行。secure_file_priv
可以設定如下:如果為空,則變數沒有任何作用。這不是安全的設定。
如果設定為目錄名稱,則伺服器會限制匯入和匯出操作僅使用該目錄中的檔案。該目錄必須存在;伺服器不會建立它。
如果設定為
NULL
,則伺服器會停用匯入和匯出操作。
預設值是平台特定的,並取決於
INSTALL_LAYOUT
CMake 選項的值,如下表所示。如果要明確指定預設的secure_file_priv
值(如果您是從原始碼建置),請使用INSTALL_SECURE_FILE_PRIVDIR
CMake 選項。INSTALL_LAYOUT
值預設 secure_file_priv
值STANDALONE
空 DEB
,RPM
,SVR4
/var/lib/mysql-files
其他 mysql-files 在 CMAKE_INSTALL_PREFIX
值下伺服器會在啟動時檢查
secure_file_priv
的值,如果值不安全,則會將警告寫入錯誤日誌。如果值為空、該值是資料目錄或其子目錄,或所有使用者都可以存取的目錄,則會認為非NULL
值不安全。如果secure_file_priv
設定為不存在的路徑,則伺服器會將錯誤訊息寫入錯誤日誌並退出。 -
命令列格式 --select-into-buffer-size=#
系統變數 select_into_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 131072
最小值 8192
最大值 2147479552
單位 位元組 區塊大小 4096
當使用
SELECT INTO OUTFILE
或SELECT INTO DUMPFILE
將資料傾印到一個或多個檔案以建立備份、資料遷移或其他目的時,寫入通常可以緩衝,然後觸發大量寫入 I/O 活動到磁碟或其他儲存裝置,並使其他對延遲更敏感的查詢停滯。您可以使用此變數來控制用於將資料寫入儲存裝置的緩衝區大小,以決定何時應進行緩衝區同步,從而防止發生剛才描述的寫入停頓。select_into_buffer_size
會覆寫為read_buffer_size
設定的任何值。(select_into_buffer_size
和read_buffer_size
具有相同的預設值、最大值和最小值。)您也可以使用select_into_disk_sync_delay
來設定之後要觀察的逾時,每次發生同步時。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --select-into-disk-sync={ON|OFF}
系統變數 select_into_disk_sync
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
有效值 OFF
ON
設定為
ON
時,使用select_into_buffer_size
啟用長時間執行的SELECT INTO OUTFILE
或SELECT INTO DUMPFILE
陳述式對輸出檔案的寫入進行緩衝區同步。 -
命令列格式 --select-into-disk-sync-delay=#
系統變數 select_into_disk_sync_delay
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 0
最小值 0
最大值 31536000
單位 毫秒 當透過
select_into_disk_sync
啟用長時間執行的SELECT INTO OUTFILE
或SELECT INTO DUMPFILE
陳述式對輸出檔案的寫入進行緩衝區同步時,此變數會設定同步後的選用延遲(以毫秒為單位)。0
(預設值)表示沒有延遲。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --session-track-gtids=value
系統變數 session_track_gtids
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 OFF
OWN_GTID
ALL_GTIDS
控制伺服器是否將 GTID 傳回給客戶端,使客戶端能夠使用它們來追蹤伺服器狀態。根據變數值,在執行每個交易結束時,伺服器的 GTID 會被捕獲並作為確認的一部分傳回給客戶端。
session_track_gtids
的可能值如下:OFF
:伺服器不會將 GTID 傳回給客戶端。這是預設值。OWN_GTID
:伺服器會傳回自上次確認以來,此客戶端在其目前會話中成功提交的所有交易的 GTID。通常,這是最後提交的交易的單一 GTID,但如果單一客戶端請求導致多個交易,則伺服器會傳回包含所有相關 GTID 的 GTID 集合。ALL_GTIDS
:伺服器會傳回其gtid_executed
系統變數的全局值,它會在交易成功提交後的某個時間點讀取。除了剛剛提交的交易的 GTID 之外,此 GTID 集合還包含任何客戶端在伺服器上提交的所有交易,並且可能包含在目前正在確認的交易提交之後提交的交易。
session_track_gtids
不能在交易上下文中設定。有關會話狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端會話狀態」。
-
命令列格式 --session-track-schema[={OFF|ON}]
系統變數 session_track_schema
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
控制伺服器是否追蹤目前會話中設定預設架構(資料庫)的時間,並通知客戶端以使架構名稱可用。
如果啟用了架構名稱追蹤器,則每次設定預設架構時都會發生名稱通知,即使新的架構名稱與舊的架構名稱相同也是如此。
有關會話狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端會話狀態」。
-
命令列格式 --session-track-state-change[={OFF|ON}]
系統變數 session_track_state_change
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
控制伺服器是否追蹤目前會話的狀態變更,並在發生狀態變更時通知客戶端。可以針對客戶端會話狀態的這些屬性報告變更:
預設架構(資料庫)。
系統變數的會話特定值。
使用者定義的變數。
暫存表。
預先處理的陳述式。
如果啟用了會話狀態追蹤器,則每次發生涉及追蹤的會話屬性的變更時都會發生通知,即使新的屬性值與舊的屬性值相同也是如此。例如,將使用者定義的變數設定為其目前值會導致通知。
session_track_state_change
變數僅控制何時發生變更的通知,而不是變更的內容。例如,當設定預設架構或指定追蹤的會話系統變數時,會發生狀態變更通知,但通知不包含架構名稱或變數值。若要接收架構名稱或會話系統變數值的通知,請分別使用session_track_schema
或session_track_system_variables
系統變數。注意將值指定給
session_track_state_change
本身不被視為狀態變更,因此不會回報。但是,如果其名稱列在session_track_system_variables
的值中,則對其的任何指定都會導致新值的通知。有關會話狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端會話狀態」。
session_track_system_variables
命令列格式 --session-track-system-variables=#
系統變數 session_track_system_variables
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 time_zone, autocommit, character_set_client, character_set_results, character_set_connection
控制伺服器是否追蹤對工作階段系統變數的指派,並將每個指派變數的名稱和值通知給客戶端。變數值是以逗號分隔的變數清單,用於追蹤指派。預設情況下,會針對
time_zone
、autocommit
、character_set_client
、character_set_results
和character_set_connection
啟用通知。(後三個變數是受SET NAMES
影響的變數。)若要啟用顯示每個處理陳述式的陳述式 ID,請使用
statement_id
變數。例如:mysql> SET @@SESSION.session_track_system_variables='statement_id' mysql> SELECT 1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.0006 sec) Statement ID: 603835
特殊值
*
(星號)會導致伺服器追蹤所有工作階段變數的指派。如果給定此值,則必須單獨指定,不能與特定的系統變數名稱一起指定。此值也會啟用顯示每個成功處理的陳述式的陳述式 ID。若要停用工作階段變數指派的通知,請將
session_track_system_variables
設定為空字串。如果已啟用工作階段系統變數追蹤,則會針對追蹤的工作階段變數的所有指派發出通知,即使新值與舊值相同也是如此。
有關會話狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端會話狀態」。
session_track_transaction_info
命令列格式 --session-track-transaction-info=value
系統變數 session_track_transaction_info
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 OFF
STATE
CHARACTERISTICS
控制伺服器是否追蹤目前工作階段內交易的狀態和特性,並通知客戶端使其可取得此資訊。允許的
session_track_transaction_info
值如下:OFF
:停用交易狀態追蹤。這是預設值。STATE
:啟用交易狀態追蹤,但不追蹤特性。狀態追蹤可讓客戶端判斷交易是否正在進行中,以及是否可以在不回滾的情況下將其移動到不同的工作階段。CHARACTERISTICS
:啟用交易狀態追蹤,包括特性追蹤。特性追蹤可讓客戶端判斷如何在另一個工作階段中重新啟動交易,使其具有與原始工作階段相同的特性。以下特性與此目的相關:ISOLATION LEVEL READ ONLY READ WRITE WITH CONSISTENT SNAPSHOT
為了讓客戶端安全地將交易重新定位到另一個工作階段,它不僅必須追蹤交易狀態,還必須追蹤交易特性。此外,客戶端必須追蹤
transaction_isolation
和transaction_read_only
系統變數,以正確判斷工作階段預設值。(若要追蹤這些變數,請將它們列在session_track_system_variables
系統變數的值中。)有關會話狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端會話狀態」。
-
命令列格式 --set-operations-buffer-size=#
系統變數 set_operations_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256K
最小值 16K
最大值 1 GB
設定
INTERSECT
和EXCEPT
運算的緩衝區大小,當hash_set_operations
最佳化器開關為ON
時,會使用雜湊表。一般而言,當啟用雜湊最佳化時,增加此緩衝區的大小會改善這些運算的效能。 sha256_password_auto_generate_rsa_keys
命令列格式 --sha256-password-auto-generate-rsa-keys[={OFF|ON}]
已棄用 是 系統變數 sha256_password_auto_generate_rsa_keys
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果資料目錄中尚不存在 RSA 私密/公用金鑰組檔案,伺服器會使用此變數來判斷是否要自動產生這些檔案。
啟動時,如果所有這些條件都為 true,伺服器會自動在資料目錄中產生 RSA 私密/公用金鑰組檔案:
sha256_password_auto_generate_rsa_keys
或caching_sha2_password_auto_generate_rsa_keys
系統變數已啟用;未指定任何 RSA 選項;資料目錄中缺少 RSA 檔案。這些金鑰組檔案可讓透過未加密連線,使用 RSA 安全地交換由sha256_password
(已棄用)或caching_sha2_password
外掛程式驗證的帳戶密碼;請參閱第 8.4.1.3 節「SHA-256 可插拔驗證」和第 8.4.1.2 節「快取 SHA-2 可插拔驗證」。如需有關 RSA 檔案自動產生的更多資訊(包括檔案名稱和特性),請參閱第 8.3.3.1 節「使用 MySQL 建立 SSL 和 RSA 憑證和金鑰」
auto_generate_certs
系統變數相關,但它控制使用 SSL 的安全連線所需的 SSL 憑證和金鑰檔案的自動產生。sha256_password_private_key_path
命令列格式 --sha256-password-private-key-path=file_name
已棄用 是 系統變數 sha256_password_private_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 private_key.pem
此變數的值是
sha256_password
(已棄用)驗證外掛程式的 RSA 私鑰檔案的路徑名稱。如果檔案命名為相對路徑,則會相對於伺服器資料目錄進行解釋。該檔案必須是 PEM 格式。重要由於此檔案儲存私密金鑰,因此應限制其存取模式,使其只能由 MySQL 伺服器讀取。
如需有關
sha256_password
的資訊,請參閱 第 8.4.1.3 節「SHA-256 可插拔驗證」。-
命令列格式 --sha256-password-proxy-users[={OFF|ON}]
已棄用 是 系統變數 sha256_password_proxy_users
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制
sha256_password
(已棄用)內建驗證外掛程式是否支援 Proxy 使用者。除非啟用check_proxy_users
系統變數,否則它不會有任何作用。如需有關使用者 Proxy 的資訊,請參閱 第 8.2.19 節「Proxy 使用者」。 sha256_password_public_key_path
命令列格式 --sha256-password-public-key-path=file_name
已棄用 是 系統變數 sha256_password_public_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 public_key.pem
此變數的值是
sha256_password
(已棄用)驗證外掛程式的 RSA 公鑰檔案的路徑名稱。如果檔案命名為相對路徑,則會相對於伺服器資料目錄進行解釋。該檔案必須是 PEM 格式。由於此檔案儲存公鑰,因此可以自由分發給客戶端使用者。(當使用 RSA 密碼加密連線至伺服器時,明確指定公鑰的客戶端必須使用與伺服器使用的公鑰相同的公鑰。)如需有關
sha256_password
(已棄用)的資訊,包括有關客戶端如何指定 RSA 公鑰的資訊,請參閱 第 8.4.1.3 節「SHA-256 可插拔驗證」。-
命令列格式 --shared-memory[={OFF|ON}]
系統變數 shared_memory
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 布林值 預設值 OFF
(僅限 Windows。)伺服器是否允許共用記憶體連線。
-
命令列格式 --shared-memory-base-name=name
系統變數 shared_memory_base_name
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 字串 預設值 MYSQL
(僅限 Windows。)用於共用記憶體連線的共用記憶體名稱。在單一實體機器上執行多個 MySQL 實例時,這非常有用。預設名稱為
MYSQL
。名稱區分大小寫。僅當伺服器啟動時啟用
shared_memory
系統變數以支援共用記憶體連線時,此變數才適用。 show_create_table_skip_secondary_engine
命令列格式 --show-create-table-skip-secondary-engine[={OFF|ON}]
系統變數 show_create_table_skip_secondary_engine
範圍 工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
啟用
show_create_table_skip_secondary_engine
會導致從SHOW CREATE TABLE
輸出中,以及由 mysqldump 工具傾印的CREATE TABLE
陳述式中排除SECONDARY ENGINE
子句。mysqldump 提供了
--show-create-skip-secondary-engine
選項。指定時,它會在傾印作業期間啟用show_create_table_skip_secondary_engine
系統變數。用於 HeatWave。請參閱HeatWave 使用者指南。
-
命令列格式 --show-create-table-verbosity[={OFF|ON}]
系統變數 show_create_table_verbosity
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果列格式是預設格式,則
SHOW CREATE TABLE
通常不會顯示ROW_FORMAT
表格選項。啟用此變數會導致SHOW CREATE TABLE
顯示ROW_FORMAT
,無論它是否為預設格式。 show_gipk_in_create_table_and_information_schema
命令列格式 --show-gipk-in-create-table-and-information-schema[={OFF|ON}]
系統變數 show_gipk_in_create_table_and_information_schema
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
產生的不可見主鍵是否在
SHOW
陳述式的輸出和資訊架構表格中可見。當此變數設定為OFF
時,不會顯示這些索引鍵。此變數不會被複製。
如需更多資訊,請參閱 第 15.1.20.11 節「產生的不可見主鍵」。
-
命令列格式 --skip-external-locking[={OFF|ON}]
系統變數 skip_external_locking
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果 mysqld 使用外部鎖定(系統鎖定),則此值為
OFF
;如果停用外部鎖定,則為ON
。這只會影響MyISAM
資料表存取。此變數由
--external-locking
或--skip-external-locking
選項設定。預設情況下,外部鎖定已停用。外部鎖定僅影響
MyISAM
資料表的存取。如需更多資訊,包括可以使用和不能使用的條件,請參閱 第 10.11.5 節,「外部鎖定」。 -
命令列格式 --skip-name-resolve[={OFF|ON}]
系統變數 skip_name_resolve
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
檢查用戶端連線時是否解析主機名稱。如果此變數為
OFF
,mysqld 會在檢查用戶端連線時解析主機名稱。如果此變數為ON
,mysqld 僅使用 IP 號碼;在這種情況下,授權表中的所有Host
欄位值都必須是 IP 位址。請參閱 第 7.1.12.3 節,「DNS 查詢和主機快取」。根據您的系統網路組態和帳戶的
Host
值,用戶端可能需要使用明確的--host
選項進行連線,例如--host=127.0.0.1
或--host=::1
。嘗試連線至主機
127.0.0.1
通常會解析為localhost
帳戶。但是,如果伺服器執行時啟用了skip_name_resolve
,則此操作會失敗。如果您打算這樣做,請確保存在可以接受連線的帳戶。例如,為了能夠使用--host=127.0.0.1
或--host=::1
以root
身分連線,請建立以下帳戶CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password'; CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
-
命令列格式 --skip-networking[={OFF|ON}]
系統變數 skip_networking
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制伺服器是否允許 TCP/IP 連線。預設情況下,此變數已停用(允許 TCP 連線)。如果啟用,伺服器僅允許本機(非 TCP/IP)連線,並且所有與 mysqld 的互動都必須使用具名管道或共用記憶體(在 Windows 上)或 Unix socket 檔案(在 Unix 上)進行。對於僅允許本機用戶端的系統,強烈建議使用此選項。請參閱 第 7.1.12.3 節,「DNS 查詢和主機快取」。
由於使用
--skip-grant-tables
啟動伺服器會停用驗證檢查,因此伺服器也會在這種情況下啟用skip_networking
來停用遠端連線。 -
命令列格式 --skip-show-database
系統變數 skip_show_database
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果使用者沒有
SHOW DATABASES
權限,此變數會阻止他們使用SHOW DATABASES
陳述式。如果您擔心使用者能夠看到屬於其他使用者的資料庫,這可以提高安全性。其效果取決於SHOW DATABASES
權限:如果變數值為ON
,則僅允許具有SHOW DATABASES
權限的使用者使用SHOW DATABASES
陳述式,並且此陳述式會顯示所有資料庫名稱。如果值為OFF
,則允許所有使用者使用SHOW DATABASES
,但只顯示使用者具有SHOW DATABASES
或其他權限的資料庫名稱。注意因為任何靜態全域權限都被視為所有資料庫的權限,所以任何靜態全域權限都允許使用者使用
SHOW DATABASES
或檢查INFORMATION_SCHEMA
的SCHEMATA
資料表來查看所有資料庫名稱,但那些在資料庫層級受到部分撤銷限制的資料庫除外。 -
命令列格式 --slow-launch-time=#
系統變數 slow_launch_time
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 0
最大值 31536000
單位 秒 如果建立執行緒所花費的時間超過此秒數,則伺服器會增加
Slow_launch_threads
狀態變數。 -
命令列格式 --slow-query-log[={OFF|ON}]
系統變數 slow_query_log
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否啟用慢查詢日誌。值可以為 0(或
OFF
)以停用日誌,或 1(或ON
)以啟用日誌。日誌輸出的目的地由log_output
系統變數控制;如果該值為NONE
,即使日誌已啟用,也不會寫入任何日誌項目。“慢” 由
long_query_time
變數的值決定。請參閱 第 7.4.5 節,「慢查詢日誌」。 -
命令列格式 --slow-query-log-file=file_name
系統變數 slow_query_log_file
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 host_name-slow.log
慢查詢日誌檔案的名稱。預設值為
,但可以使用host_name
-slow.log--slow_query_log_file
選項變更初始值。 -
命令列格式 --socket={file_name|pipe_name}
系統變數 socket
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 (Windows) MySQL
預設值(其他) /tmp/mysql.sock
在 Unix 平台上,此變數是用於本機用戶端連線的 socket 檔案名稱。預設值為
/tmp/mysql.sock
。(對於某些散佈格式,目錄可能不同,例如 RPM 的/var/lib/mysql
。)在 Windows 上,此變數是用於本機用戶端連線的具名管道名稱。預設值為
MySQL
(不區分大小寫)。 -
命令列格式 --sort-buffer-size=#
系統變數 sort_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 262144
最小值 32768
最大值 (Windows) 4294967295
最大值 (其他,64 位元平台) 18446744073709551615
最大值 (其他,32 位元平台) 4294967295
單位 位元組 每個必須執行排序的會話都會配置此大小的緩衝區。
sort_buffer_size
不是任何儲存引擎特定的,並且一般適用於最佳化。至少,sort_buffer_size
值必須夠大,才能在排序緩衝區中容納十五個元組。此外,增加max_sort_length
的值可能需要增加sort_buffer_size
的值。如需更多資訊,請參閱 第 10.2.1.16 節,「ORDER BY 最佳化」如果您在
SHOW GLOBAL STATUS
輸出中看到每秒有許多Sort_merge_passes
,您可以考慮增加sort_buffer_size
值,以加快無法透過查詢最佳化或改進索引來改進的ORDER BY
或GROUP BY
作業。最佳化工具會嘗試計算出需要多少空間,但可以分配更多空間,直到達到限制。將其設定得比全域所需的大,會減慢大多數執行排序的查詢。最好將其作為會話設定來增加,並且僅針對需要較大大小的會話進行增加。在 Linux 上,有 256KB 和 2MB 的閾值,其中較大的值可能會顯著減慢記憶體分配,因此您應該考慮保持在其中一個值以下。實驗以找到適合您工作負載的最佳值。請參閱 第 B.3.3.5 節,「MySQL 儲存暫存檔案的位置」。
sort_buffer_size
的最大允許設定為 4GB-1。對於 64 位元平台允許較大的值(但 64 位元 Windows 除外,對於 64 位元 Windows,較大的值會被截斷為 4GB-1 並顯示警告)。 -
系統變數 sql_auto_is_null
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
如果此變數已啟用,則在成功插入自動產生的
AUTO_INCREMENT
值之後,您可以透過發出以下形式的陳述式來找到該值SELECT * FROM tbl_name WHERE auto_col IS NULL
如果該陳述式傳回一列,則傳回的值與您調用
LAST_INSERT_ID()
函式相同。如需詳細資訊,包括多列插入後的傳回值,請參閱 第 14.15 節,「資訊函式」。如果沒有成功插入AUTO_INCREMENT
值,則SELECT
陳述式不會傳回任何列。一些 ODBC 程式(例如 Access)會使用
IS NULL
比較來擷取AUTO_INCREMENT
值。請參閱 取得自動遞增值。可以透過將sql_auto_is_null
設定為OFF
來停用此行為。sql_auto_is_null
的預設值為OFF
。 -
系統變數 sql_big_selects
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
如果設定為
OFF
,MySQL 會中止可能需要很長時間才能執行的SELECT
陳述式(也就是說,最佳化工具估計檢查的列數超過max_join_size
值的陳述式)。當發出不建議的WHERE
陳述式時,這非常有用。新連線的預設值為ON
,這允許所有SELECT
陳述式。如果您將
max_join_size
系統變數設定為DEFAULT
以外的值,則sql_big_selects
會設定為OFF
。 -
系統變數 sql_buffer_result
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
如果啟用,
sql_buffer_result
會強制將SELECT
陳述式的結果放入暫存資料表中。這有助於 MySQL 盡早釋放資料表鎖定,並且在將結果傳送給用戶端需要很長時間的情況下可能有利。預設值為OFF
。 sql_generate_invisible_primary_key
命令列格式 --sql-generate-invisible-primary-key[={OFF|ON}]
系統變數 sql_generate_invisible_primary_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此伺服器是否會為任何未建立主索引鍵的
InnoDB
資料表新增產生的隱形主索引鍵。此變數不會複製。此外,即使在副本上設定,複製應用程式執行緒也會忽略它;這表示,依預設,副本不會為任何複製的資料表產生主索引鍵,而這些資料表在來源上建立時沒有主索引鍵。您可以透過在
CHANGE REPLICATION SOURCE TO
陳述式中設定REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE
,選擇性地指定複製通道,來讓副本為這類資料表產生隱形主索引鍵。如需更多資訊和範例,請參閱第 15.1.20.11 節,「產生的隱形主索引鍵」。
-
系統變數 sql_log_off
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
有效值 OFF
(啟用記錄)ON
(停用記錄)此變數控制是否針對目前的工作階段停用一般查詢記錄(假設已啟用一般查詢記錄)。預設值為
OFF
(即啟用記錄)。若要停用或啟用目前工作階段的一般查詢記錄,請將工作階段sql_log_off
變數設定為ON
或OFF
。設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
-
命令列格式 --sql-mode=name
系統變數 sql_mode
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 設定 預設值 ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
有效值 ALLOW_INVALID_DATES
ANSI_QUOTES
ERROR_FOR_DIVISION_BY_ZERO
HIGH_NOT_PRECEDENCE
IGNORE_SPACE
NO_AUTO_VALUE_ON_ZERO
NO_BACKSLASH_ESCAPES
NO_DIR_IN_CREATE
NO_ENGINE_SUBSTITUTION
NO_UNSIGNED_SUBTRACTION
NO_ZERO_DATE
NO_ZERO_IN_DATE
ONLY_FULL_GROUP_BY
PAD_CHAR_TO_FULL_LENGTH
PIPES_AS_CONCAT
REAL_AS_FLOAT
STRICT_ALL_TABLES
STRICT_TRANS_TABLES
TIME_TRUNCATE_FRACTIONAL
目前的伺服器 SQL 模式,可以動態設定。如需詳細資訊,請參閱第 7.1.11 節,「伺服器 SQL 模式」。
注意MySQL 安裝程式可能會在安裝過程中設定 SQL 模式。
如果 SQL 模式與預設值或您預期的值不同,請檢查伺服器在啟動時讀取的選項檔案中是否有設定。
-
如果啟用(預設值),
Note
級別的診斷會遞增warning_count
,且伺服器會記錄它們。如果停用,Note
診斷不會遞增warning_count
,且伺服器不會記錄它們。mysqldump 包含停用此變數的輸出,如此重新載入傾印檔案時,不會產生對重新載入操作完整性沒有影響的事件警告。 -
系統變數 sql_quote_show_create
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果啟用(預設值),伺服器會為
SHOW CREATE TABLE
和SHOW CREATE DATABASE
陳述式引用識別碼。如果停用,則會停用引用。依預設會啟用此選項,以便複製適用於需要引用的識別碼。請參閱第 15.7.7.11 節,「SHOW CREATE TABLE 陳述式」和第 15.7.7.7 節,「SHOW CREATE DATABASE 陳述式」。 -
命令列格式 --sql-require-primary-key[={OFF|ON}]
系統變數 sql_require_primary_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
建立新資料表或變更現有資料表結構的陳述式是否強制要求資料表具有主索引鍵。
設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」。
啟用此變數有助於避免在資料表沒有主索引鍵時,可能在以列為基礎的複製中發生的效能問題。假設資料表沒有主索引鍵,且更新或刪除修改多列。在複製來源伺服器上,可以使用單一資料表掃描執行此操作,但是當使用以列為基礎的複製進行複製時,會導致在副本上為每個要修改的列執行資料表掃描。使用主索引鍵時,不會發生這些資料表掃描。
sql_require_primary_key
適用於基本資料表和TEMPORARY
資料表,且對其值的變更會複製到副本伺服器。資料表必須使用可以參與複製的 MySQL 儲存引擎。啟用後,
sql_require_primary_key
會有以下效果嘗試建立沒有主索引鍵的新資料表會失敗,並出現錯誤。這包括
CREATE TABLE ... LIKE
。它也包括CREATE TABLE ... SELECT
,除非CREATE TABLE
部分包含主索引鍵定義。嘗試從現有資料表捨棄主索引鍵會失敗,並出現錯誤,但允許在相同的
ALTER TABLE
陳述式中捨棄主索引鍵並新增主索引鍵。即使資料表也包含
UNIQUE NOT NULL
索引,捨棄主索引鍵也會失敗。嘗試匯入沒有主索引鍵的資料表會失敗,並出現錯誤。
CHANGE REPLICATION SOURCE TO
陳述式的REQUIRE_TABLE_PRIMARY_KEY_CHECK
選項,讓副本可以選擇自己的主索引鍵檢查原則。當針對複製通道將選項設定為ON
時,副本在複製操作中一律會對sql_require_primary_key
系統變數使用ON
值,要求主索引鍵。當選項設定為OFF
時,副本在複製操作中一律會對sql_require_primary_key
系統變數使用OFF
值,因此永遠不需要主索引鍵,即使來源需要主索引鍵。當REQUIRE_TABLE_PRIMARY_KEY_CHECK
選項設定為STREAM
(預設值)時,副本會針對每個交易使用從來源複製的任何值。使用REQUIRE_TABLE_PRIMARY_KEY_CHECK
選項的STREAM
設定,如果複製通道正在使用權限檢查,PRIVILEGE_CHECKS_USER
帳戶需要足夠的權限才能設定受限制的工作階段變數,以便可以設定sql_require_primary_key
系統變數的工作階段值。使用ON
或OFF
設定時,帳戶不需要這些權限。如需詳細資訊,請參閱第 19.3.3 節,「複製權限檢查」。 -
系統變數 sql_safe_updates
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
如果啟用此變數,未使用
WHERE
子句中的索引鍵或LIMIT
子句的UPDATE
和DELETE
陳述式會產生錯誤。這使得可以攔截未正確使用索引鍵,且可能變更或刪除大量列的UPDATE
和DELETE
陳述式。預設值為OFF
。對於 mysql 用戶端,可以使用
--safe-updates
選項啟用sql_safe_updates
。如需更多資訊,請參閱使用安全更新模式 (--safe-updates)。 -
系統變數 sql_select_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 18446744073709551615
最小值 0
最大值 18446744073709551615
從
SELECT
陳述式傳回的最大列數。如需更多資訊,請參閱使用安全更新模式 (--safe-updates)。新連線的預設值是伺服器允許每個資料表的最大列數。典型的預設值為 (232)−1 或 (264)−1。如果您已變更限制,則可以透過指派
DEFAULT
值來還原預設值。如果
SELECT
有LIMIT
子句,則LIMIT
的優先順序高於sql_select_limit
的值。 -
系統變數 sql_warnings
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果發生警告,此變數會控制單列
INSERT
陳述式是否產生資訊字串。預設值為OFF
。將值設定為ON
以產生資訊字串。 -
PEM 格式的憑證授權單位 (CA) 憑證檔案的路徑名稱。檔案包含受信任的 SSL 憑證授權單位清單。
此變數可以在執行時間修改,以影響伺服器在執行
ALTER INSTANCE RELOAD TLS
之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視。 -
命令列格式 --ssl-capath=dir_name
系統變數 ssl_capath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
包含 PEM 格式的受信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄的路徑名稱。
此變數可以在執行時間修改,以影響伺服器在執行
ALTER INSTANCE RELOAD TLS
之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視。 -
PEM 格式的伺服器 SSL 公開金鑰憑證檔案的路徑名稱。
如果伺服器啟動時,
ssl_cert
設定為使用任何受限制的加密演算法或加密演算法類別的憑證,伺服器啟動時將停用加密連線的支援。關於加密演算法限制的資訊,請參閱連線加密演算法設定。此變數可以在執行時間修改,以影響伺服器在執行
ALTER INSTANCE RELOAD TLS
之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視。 -
命令列格式 --ssl-cipher=名稱
系統變數 ssl_cipher
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
用於 TLSv1.2 連線的可接受加密演算法清單。如果清單中沒有任何支援的加密演算法,使用此 TLS 協定的加密連線將無法運作。
此清單可以包含以下任何值
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES256-CCM
ECDHE-ECDSA-AES128-CCM
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES256-CCM
DHE-RSA-AES128-CCM
DHE-RSA-CHACHA20-POLY1305
當設定此變數時,嘗試包含未在此處顯示的任何密碼清單中的值會引發錯誤 (
ER_BLOCKED_CIPHER
)。為了獲得最大的可攜性,加密演算法清單應為一個或多個以冒號分隔的加密演算法名稱。以下範例顯示兩個以冒號分隔的加密演算法名稱:
[mysqld] ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"
OpenSSL 支援在 OpenSSL 文件 https://www.openssl.org/docs/manmaster/man1/ciphers.html 中描述的指定加密演算法語法。
關於 MySQL 支援哪些加密演算法的資訊,請參閱章節 8.3.2,「加密連線 TLS 協定和加密演算法」。
此變數可以在執行時間修改,以影響伺服器在執行
ALTER INSTANCE RELOAD TLS
之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視。 -
包含 PEM 格式憑證撤銷清單的檔案路徑名稱。
此變數可以在執行時間修改,以影響伺服器在執行
ALTER INSTANCE RELOAD TLS
之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視。 -
命令列格式 --ssl-crlpath=目錄名稱
系統變數 ssl_crlpath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
包含 PEM 格式憑證撤銷清單檔案的目錄路徑。
此變數可以在執行時間修改,以影響伺服器在執行
ALTER INSTANCE RELOAD TLS
之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視。 -
命令列格式 --ssl-fips-mode={OFF|ON|STRICT}
已棄用 是 系統變數 ssl_fips_mode
範圍 全域 動態 否 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 OFF
(或 0)ON
(或 1)STRICT
(或 2)控制是否在伺服器端啟用 FIPS 模式。
ssl_fips_mode
系統變數與其他ssl_
系統變數不同之處在於,它不是用於控制伺服器是否允許加密連線,而是影響允許哪些加密操作。請參閱章節 8.8,「FIPS 支援」。xxx
允許以下
ssl_fips_mode
值OFF
(或 0):停用 FIPS 模式。ON
(或 1):啟用 FIPS 模式。STRICT
(或 2):啟用「“嚴格”」FIPS 模式。
注意如果 OpenSSL FIPS 物件模組不可用,則
ssl_fips_mode
唯一允許的值為OFF
。在這種情況下,在啟動時將ssl_fips_mode
設定為ON
或STRICT
會導致伺服器產生錯誤訊息並退出。此選項已棄用且設為唯讀。預期會在未來版本的 MySQL 中移除。
-
伺服器 SSL 私鑰檔案的 PEM 格式路徑名稱。為了獲得更好的安全性,請使用 RSA 金鑰大小至少為 2048 位元的憑證。
如果金鑰檔案受密碼保護,伺服器會提示使用者輸入密碼。密碼必須以互動方式提供;它不能儲存在檔案中。如果密碼不正確,程式會繼續執行,就像無法讀取金鑰一樣。
此變數可以在執行時間修改,以影響伺服器在執行
ALTER INSTANCE RELOAD TLS
之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視。 -
命令列格式 --ssl_session_cache_mode={ON|OFF}
系統變數 ssl_session_cache_mode
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
有效值 ON
OFF
控制是否在伺服器端啟用記憶體中的工作階段快取,以及伺服器產生工作階段票證。預設模式為
ON
(啟用工作階段快取模式)。只有在執行ALTER INSTANCE RELOAD TLS
陳述式後,或在重新啟動(如果變數值已持續存在)後,變更ssl_session_cache_mode
系統變數才會生效。允許以下
ssl_session_cache_mode
值ON
:啟用工作階段快取模式。OFF
:停用工作階段快取模式。
如果此系統變數的值為
OFF
,則伺服器不會宣告其對工作階段恢復的支援。在 OpenSSL 1.0.x
上執行時,始終會產生工作階段票證,但是當啟用ssl_session_cache_mode
時,這些票證無法使用。可以使用
Ssl_session_cache_mode
狀態變數觀察ssl_session_cache_mode
目前生效的值。 -
命令列格式 --ssl_session_cache_timeout
系統變數 ssl_session_cache_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 300
最小值 0
最大值 84600
單位 秒 設定在伺服器建立新的加密連線時,允許重複使用先前工作階段的時間段,前提是啟用了
ssl_session_cache_mode
系統變數且先前的會話資料可用。如果工作階段逾時到期,則無法再重複使用工作階段。預設值為 300 秒,最大值為 84600(或一天以秒為單位)。只有在執行
ALTER INSTANCE RELOAD TLS
陳述式後,或在重新啟動(如果變數值已持續存在)後,變更ssl_session_cache_timeout
系統變數才會生效。可以使用Ssl_session_cache_timeout
狀態變數觀察ssl_session_cache_timeout
目前生效的值。 -
系統變數 statement_id
範圍 工作階段 動態 否 SET_VAR
提示適用否 類型 整數 目前工作階段中執行的每個陳述式都會被指派一個序號。這可以與
session_track_system_variables
系統變數一起使用,以在效能架構表格(例如events_statements_history
表格)中識別此陳述式。 -
命令列格式 --stored-program-cache=#
系統變數 stored_program_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 16
最大值 524288
為每個連線設定快取儲存程序的最大軟上限。此變數的值是根據 MySQL 伺服器為儲存程序和儲存函數維護的兩個快取中,每個快取所保留的儲存程序數量來指定的。
每當執行儲存程序時,在剖析程序中的第一個或頂層陳述式之前,都會檢查此快取大小;如果相同類型(根據正在執行的儲存程序或儲存函數)的程序數量超過此變數指定的限制,則會清除對應的快取,並釋放先前為快取物件配置的記憶體。即使儲存程序之間存在相依性,這也能夠安全地清除快取。
儲存程序和儲存函數快取與 字典物件快取的儲存程式定義快取分割區並行存在。儲存程序和儲存函數快取是每個連線的,而儲存程式定義快取是共用的。儲存程序和儲存函數快取中的物件是否存在,與儲存程式定義快取中的物件是否存在沒有關係,反之亦然。有關更多資訊,請參閱章節 16.4,「字典物件快取」。
stored_program_definition_cache
命令列格式 --stored-program-definition-cache=#
系統變數 stored_program_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 256
最大值 524288
為字典物件快取中可以保留的已使用和未使用儲存程式定義物件的數量定義限制。
只有當已使用物件的數量小於
stored_program_definition_cache
定義的容量時,才會將未使用的儲存程式定義物件保留在字典物件快取中。設定為 0 表示僅在儲存程式定義物件使用時,才會將其保留在字典物件快取中。
儲存程式定義快取分割區與使用
stored_program_cache
選項設定的儲存程序和儲存函數快取並行存在。stored_program_cache
選項為每個連線設定快取儲存程序或函數數量的最大軟上限,並且每次連線執行儲存程序或函數時都會檢查此限制。另一方面,儲存程式定義快取分割區是一個共用的快取,用於儲存其他用途的儲存程式定義物件。儲存程式定義快取分割區中的物件是否存在,與儲存程序快取或儲存函數快取中的物件是否存在沒有關係,反之亦然。有關相關資訊,請參閱章節 16.4,「字典物件快取」。
-
命令列格式 --super-read-only[={OFF|ON}]
系統變數 super_read_only
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果啟用
read_only
系統變數,伺服器只允許具有CONNECTION_ADMIN
權限(或已棄用的SUPER
權限)的使用者進行用戶端更新。如果也啟用super_read_only
系統變數,則伺服器甚至會禁止具有CONNECTION_ADMIN
或SUPER
權限的使用者進行用戶端更新。請參閱read_only
系統變數的描述,了解唯讀模式的描述,以及read_only
和super_read_only
如何互動的資訊。啟用
super_read_only
時,會阻止用戶端更新,這包括那些表面上看起來不像是更新的操作,例如CREATE FUNCTION
(安裝可載入的函數)、INSTALL PLUGIN
和INSTALL COMPONENT
。這些操作被禁止,因為它們會變更mysql
系統結構描述中的資料表。同樣地,如果啟用了事件排程器,啟用
super_read_only
系統變數會阻止它更新events
資料字典資料表中的事件「上次執行」時間戳記。這會導致事件排程器在下次嘗試執行排定的事件時停止,並在伺服器錯誤日誌中寫入訊息。(在這種情況下,event_scheduler
系統變數不會從ON
變更為OFF
。這意味著此變數會拒絕 DBA 希望事件排程器啟用或停用的意圖,而它的實際啟動或停止狀態可能不同。) 如果在啟用super_read_only
之後隨後停用,伺服器會根據需要自動重新啟動事件排程器。在複寫來源伺服器上變更
super_read_only
不會複寫到複本伺服器。此值可以在複本上獨立於來源上的設定來設定。 -
命令列格式 --syseventlog.facility=值
系統變數 syseventlog.facility
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 daemon
寫入到
syslog
的錯誤日誌輸出的設備 (發送訊息的程式類型)。除非安裝了log_sink_syseventlog
錯誤日誌元件,否則此變數不可用。請參閱第 7.4.2.8 節「錯誤記錄到系統日誌」。允許的值可能因作業系統而異;請查閱您的系統
syslog
文件。此變數在 Windows 上不存在。
-
命令列格式 --syseventlog.include-pid[={OFF|ON}]
系統變數 syseventlog.include_pid
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
是否在寫入到
syslog
的錯誤日誌輸出的每一行中包含伺服器程序 ID。除非安裝了log_sink_syseventlog
錯誤日誌元件,否則此變數不可用。請參閱第 7.4.2.8 節「錯誤記錄到系統日誌」。此變數在 Windows 上不存在。
-
命令列格式 --syseventlog.tag=標籤
系統變數 syseventlog.tag
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 空字串
要新增到寫入到
syslog
或 Windows 事件日誌的錯誤日誌輸出中伺服器識別碼的標籤。除非安裝了log_sink_syseventlog
錯誤日誌元件,否則此變數不可用。請參閱第 7.4.2.8 節「錯誤記錄到系統日誌」。預設情況下,不設定標籤,因此伺服器識別碼在 Windows 上簡稱為
MySQL
,在其他平台上為mysqld
。如果指定了標籤
的標籤值,則會附加到伺服器識別碼,並帶有前導連字號,從而產生mysqld-
的標籤
syslog
識別碼 (或 Windows 上的MySQL-
)。標籤
在 Windows 上,若要使用尚未存在的標籤,必須從具有管理員權限的帳戶執行伺服器,以便允許建立標籤的登錄項目。如果標籤已存在,則不需要提升的權限。
-
系統變數 system_time_zone
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 伺服器系統時區。當伺服器開始執行時,它會從機器預設值繼承時區設定,可能會受到用於執行伺服器的帳戶環境或啟動腳本的修改。該值用於設定
system_time_zone
。若要明確指定系統時區,請設定TZ
環境變數,或使用--timezone
選項來設定 mysqld_safe 腳本。除了啟動時初始化之外,如果伺服器主機時區變更 (例如,由於日光節約時間),
system_time_zone
會反映該變更,這對應用程式有以下含義在日光節約變更之前和之後,參照
system_time_zone
的查詢將會取得不同的值。對於在日光節約變更之前開始執行,並在變更之後結束的查詢,
system_time_zone
在查詢中保持不變,因為該值通常在執行開始時會被快取。
system_time_zone
變數與time_zone
變數不同。儘管它們可能具有相同的值,但後者變數用於初始化每個連接用戶端的時區。請參閱第 7.1.15 節「MySQL 伺服器時區支援」。 -
命令列格式 --table-definition-cache=#
系統變數 table_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 400
最大值 524288
可以儲存在資料表定義快取中的資料表定義數量。如果使用大量資料表,您可以建立較大的資料表定義快取,以加速開啟資料表。與一般資料表快取不同,資料表定義快取佔用的空間較少,且不使用檔案描述元。最小值為 400。預設值根據以下公式計算,上限為 2000
MIN(400 + table_open_cache / 2, 2000)
對於
InnoDB
,table_definition_cache
設定充當字典物件快取中的資料表實例數量和一次可以開啟的每個資料表檔案資料表空間數量的軟限制。如果字典物件快取中的資料表實例數量超過
table_definition_cache
限制,則 LRU 機制會開始將資料表實例標記為要移除,並最終將其從字典物件快取中移除。具有快取中繼資料的開啟資料表數量可能會高於table_definition_cache
限制,因為具有外部索引鍵關聯性的資料表實例不會放置在 LRU 清單中。一次可以開啟的每個資料表檔案資料表空間數量受
table_definition_cache
和innodb_open_files
設定的限制。如果同時設定了兩個變數,則使用較高的設定。如果未設定任一變數,則使用具有較高預設值的table_definition_cache
設定。如果開啟的資料表空間數量超過table_definition_cache
或innodb_open_files
定義的限制,則 LRU 機制會在 LRU 清單中搜尋完全刷新且目前未延伸的資料表空間檔案。每次開啟新的資料表空間時,都會執行此程序。只會關閉非作用中的資料表空間。資料表定義快取與 字典物件快取的資料表定義快取分割區並行存在。這兩個快取都儲存資料表定義,但為 MySQL 伺服器的不同部分提供服務。一個快取中的物件與另一個快取中的物件是否存在沒有任何關聯。如需更多資訊,請參閱第 16.4 節「字典物件快取」。
table_encryption_privilege_check
命令列格式 --table-encryption-privilege-check[={OFF|ON}]
系統變數 table_encryption_privilege_check
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
控制在建立或變更具有與
default_table_encryption
設定不同的加密的結構描述或一般資料表空間時,或者在建立或變更具有與預設結構描述加密不同的加密設定的資料表時發生的TABLE_ENCRYPTION_ADMIN
權限檢查。預設情況下,會停用檢查。在執行階段設定
table_encryption_privilege_check
需要SUPER
權限。table_encryption_privilege_check
支援SET PERSIST
和SET PERSIST_ONLY
語法。請參閱第 7.1.9.3 節「持續性系統變數」。如需更多資訊,請參閱 定義結構描述和一般表格空間的預設加密。
-
命令列格式 --table-open-cache=#
系統變數 table_open_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 4000
最小值 1
最大值 524288
所有執行緒的開啟資料表數量。增加此值會增加 mysqld 需要的檔案描述元數量。此變數的有效值是
open_files_limit
的有效值- 10 -
max_connections
的有效值/ 2
和 400 中的較大者;也就是說MAX( (open_files_limit - 10 - max_connections) / 2, 400 )
您可以檢查
Opened_tables
狀態變數,以確認是否需要增加資料表快取。如果Opened_tables
的值很大,且您不常使用FLUSH TABLES
(它會強制關閉並重新開啟所有資料表),那麼您應該增加table_open_cache
變數的值。關於資料表快取的更多資訊,請參閱第 10.4.3.1 節,「MySQL 如何開啟與關閉資料表」。 -
命令列格式 --table-open-cache-instances=#
系統變數 table_open_cache_instances
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 16
最小值 1
最大值 64
開啟資料表快取實例的數量。為了減少工作階段之間的競爭以提升擴展性,開啟的資料表快取可以分割成數個較小的快取實例,其大小為
table_open_cache
/table_open_cache_instances
。工作階段只需要鎖定一個實例,即可存取 DML 陳述式。這會在實例之間區隔快取存取,在許多工作階段存取資料表時,可提升使用快取之操作的效能。(DDL 陳述式仍需要鎖定整個快取,但此類陳述式的頻率遠低於 DML 陳述式。)在經常使用 16 個或更多核心的系統上,建議使用 8 或 16 的值。但是,如果您的資料表上有許多大型觸發程序導致高記憶體負載,則
table_open_cache_instances
的預設設定可能會導致過多的記憶體使用量。在這種情況下,將table_open_cache_instances
設定為 1 以限制記憶體使用量可能會有所幫助。 -
命令列格式 --tablespace-definition-cache=#
系統變數 tablespace_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 256
最大值 524288
定義可以保留在字典物件快取中的資料表空間定義物件(無論已使用或未使用)的數量上限。
只有在使用的資料表空間定義物件數量小於
tablespace_definition_cache
所定義的容量時,未使用的資料表空間定義物件才會保留在字典物件快取中。設定為
0
表示資料表空間定義物件只在使用時才會保留在字典物件快取中。如需更多資訊,請參閱第 16.4 節「字典物件快取」。
-
命令列格式 --temptable-max-mmap=#
系統變數 temptable_max_mmap
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 2^64-1
單位 位元組 定義 TempTable 儲存引擎在開始將資料儲存到磁碟上的
InnoDB
內部暫存資料表之前,允許從記憶體對應暫存檔案配置的最大記憶體量(以位元組為單位)。設定為 0(預設)會停用從記憶體對應暫存檔案配置記憶體。如需更多資訊,請參閱第 10.4.4 節,「MySQL 中的內部暫存資料表使用」。在 MySQL 8.4 之前,此選項設定為 1 GiB 而不是 0。
-
命令列格式 --temptable-max-ram=#
系統變數 temptable_max_ram
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 總記憶體的 3%:最小 1 GB,最大 4 GB
最小值 2097152
最大值 2^64-1
單位 位元組 定義
TempTable
儲存引擎在開始將資料儲存到磁碟之前可以佔用的最大記憶體量。預設值為伺服器上可用總記憶體的 3%,最小和最大預設範圍為 1-4 GiB。如需更多資訊,請參閱第 10.4.4 節,「MySQL 中的內部暫存資料表使用」。在 MySQL 8.4 之前,預設值始終為 1 GiB。
-
命令列格式 --temptable-use-mmap[={OFF|ON}]
已棄用 是 系統變數 temptable_use_mmap
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
定義當 TempTable 儲存引擎佔用的記憶體量超過
temptable_max_ram
變數定義的限制時,TempTable 儲存引擎是否將內部記憶體暫存資料表的空間配置為記憶體對應暫存檔案。當temptable_use_mmap
停用(預設)時,TempTable 儲存引擎會改用InnoDB
磁碟上的內部暫存資料表。如需更多資訊,請參閱第 10.4.4 節,「MySQL 中的內部暫存資料表使用」。 -
命令列格式 --thread-cache-size=#
系統變數 thread_cache_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 0
最大值 16384
伺服器應快取多少執行緒以供重複使用。當用戶端中斷連線時,如果快取中的執行緒數量少於
thread_cache_size
,則會將用戶端的執行緒放入快取中。對執行緒的要求會盡可能重複使用快取中的執行緒來滿足,只有在快取為空時才會建立新的執行緒。如果您有很多新連線,可以增加此變數以提升效能。通常,如果您的執行緒實作良好,這不會顯著提升效能。但是,如果您的伺服器每秒看到數百個連線,您通常應將thread_cache_size
設定得足夠高,以便大多數新連線都使用快取的執行緒。藉由檢查Connections
和Threads_created
狀態變數之間的差異,您可以瞭解執行緒快取的效率如何。如需詳細資訊,請參閱第 7.1.10 節,「伺服器狀態變數」。預設值基於以下公式,上限為 100
8 + (max_connections / 100)
-
命令列格式 --thread-handling=name
系統變數 thread_handling
範圍 全域 動態 否 SET_VAR
提示適用否 類型 列舉 預設值 one-thread-per-connection
有效值 no-threads
one-thread-per-connection
loaded-dynamically
伺服器用於連線執行緒的執行緒處理模型。允許的值為
no-threads
(伺服器使用單一執行緒來處理一個連線)、one-thread-per-connection
(伺服器使用一個執行緒來處理每個用戶端連線),以及loaded-dynamically
(由執行緒集區外掛程式在初始化時設定)。no-threads
對於 Linux 下的偵錯很有用;請參閱第 7.9 節,「偵錯 MySQL」。 -
命令列格式 --thread-pool-algorithm=#
系統變數 thread_pool_algorithm
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 1
此變數控制執行緒集區外掛程式使用的演算法
0
:使用保守的低並行演算法。1
:使用積極的高並行演算法,在最佳執行緒計數下效能更好,但如果連線數達到極高值,效能可能會降低。
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
thread_pool_dedicated_listeners
命令列格式 --thread-pool-dedicated-listeners
系統變數 thread_pool_dedicated_listeners
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
在每個執行緒群組中專用一個接聽器執行緒,以接聽指派給該群組之連線的傳入陳述式。
OFF
:(預設)停用專用接聽器執行緒。ON
:在每個執行緒群組中專用一個接聽器執行緒,以接聽指派給該群組之連線的傳入陳述式。專用接聽器執行緒不執行查詢。
只有在
thread_pool_max_transactions_limit
定義交易限制時,啟用thread_pool_dedicated_listeners
才有意義。否則,不應啟用thread_pool_dedicated_listeners
。HeatWave Service 使用此變數,此變數僅適用於 MySQL Enterprise Edition,且 MySQL 8.4 不支援。
thread_pool_high_priority_connection
命令列格式 --thread-pool-high-priority-connection=#
系統變數 thread_pool_high_priority_connection
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 1
此變數會影響執行前的新陳述式佇列。如果值為 0(false,預設值),則陳述式佇列會同時使用低優先權和高優先權佇列。如果值為 1(true),則佇列的陳述式一律會進入高優先權佇列。
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
-
命令列格式 --thread-pool-longrun-trx-limit=#
系統變數 thread_pool_longrun_trx_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2000
最小值 10
最大值 60*60*24
單位 毫秒 當使用
thread_pool_max_transactions_limit
時,每個執行緒群組中可以作用的交易數量都有上限。如果所有可用的數量都被長時間執行的交易使用,則指派給該群組的任何其他交易都會遭到封鎖,直到其中一個長時間執行的交易完成為止,使用者可能會認為這是無法解釋的掛起。為了減輕這個問題,如果所有使用交易上限的執行緒執行時間超過
thread_pool_longrun_trx_limit
指定的間隔(以毫秒為單位),則會暫停給定執行緒群組的限制。當長時間執行的交易數量減少時,可以(且會)再次啟用thread_pool_max_transactions_limit
。為了使這種情況發生,正在進行的交易數量必須小於thread_pool_max_transactions_limit / 2
,間隔定義如下所示MIN( MAX(thread_pool_longrun_trx_limit * 15, 5000), 30000)
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
thread_pool_max_active_query_threads
命令列格式 --thread-pool-max-active-query-threads
系統變數 thread_pool_max_active_query_threads
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 512
每個群組允許作用(執行中)查詢執行緒的最大數量。如果值為 0,則執行緒集區外掛程式最多使用可用的執行緒數量。
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
thread_pool_max_transactions_limit
命令列格式 --thread-pool-max-transactions-limit
系統變數 thread_pool_max_transactions_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 1000000
執行緒集區外掛程式允許的最大交易數量。定義交易限制會將執行緒繫結到交易,直到它提交為止,這有助於在高並行期間穩定輸送量。
預設值 0 表示沒有交易限制。該變數是動態的,但無法在執行階段從 0 變更為較高的值,反之亦然。啟動時的非零值允許在執行階段進行動態組態。需要
CONNECTION_ADMIN
權限才能在執行階段組態thread_pool_max_transactions_limit
。當您定義交易限制時,啟用
thread_pool_dedicated_listeners
會在每個執行緒群組中建立專用的接聽器執行緒。額外的專用接聽器執行緒會消耗更多資源並影響執行緒集區效能。因此,應謹慎使用thread_pool_dedicated_listeners
。當達到
thread_pool_max_transactions_limit
定義的限制時,新的連線或現有連線上的交易可能會出現掛起,直到一個或多個現有交易完成。在許多情況下,可以透過設定thread_pool_longrun_trx_limit
來緩解此問題,以便在進行中的交易數量在給定時間長度內與其匹配時,可以放寬交易最大值。如果現有連線在嘗試此操作後仍然被阻塞或長時間執行,則可能需要具有特權的連線才能存取伺服器以增加限制、移除限制或終止正在執行的交易。請參閱 特權連線。HeatWave Service 使用此變數,此變數僅適用於 MySQL Enterprise Edition,且 MySQL 8.4 不支援。
thread_pool_max_unused_threads
命令列格式 --thread-pool-max-unused-threads=#
系統變數 thread_pool_max_unused_threads
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4096
執行緒池中允許的最大未使用執行緒數。此變數可以限制休眠執行緒所使用的記憶體量。
值為 0(預設值)表示對休眠執行緒的數量沒有限制。值為
N
,其中N
大於 0,表示 1 個消費者執行緒和N
−1 個保留執行緒。在這種情況下,如果執行緒準備休眠,但休眠執行緒的數量已達到最大值,則執行緒會退出,而不是進入休眠。休眠執行緒可以是作為消費者執行緒休眠或作為保留執行緒休眠。當休眠時,執行緒池允許一個執行緒成為消費者執行緒。如果執行緒進入休眠且沒有現有的消費者執行緒,則它會作為消費者執行緒休眠。當必須喚醒執行緒時,如果有消費者執行緒,則會選擇消費者執行緒。僅當沒有消費者執行緒可以喚醒時,才會選擇保留執行緒。
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
-
命令列格式 --thread-pool-prio-kickup-timer=#
系統變數 thread_pool_prio_kickup_timer
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000
最小值 0
最大值 4294967294
單位 毫秒 此變數會影響在低優先順序佇列中等待執行的語句。該值是在等待語句移動到高優先順序佇列之前的毫秒數。預設值為 1000(1 秒)。
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
thread_pool_query_threads_per_group
命令列格式 --thread-pool-query-threads-per-group
系統變數 thread_pool_query_threads_per_group
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1
最小值 1
最大值 4096
執行緒群組中允許的最大查詢執行緒數。最大值為 4096,但如果設定了
thread_pool_max_transactions_limit
,則thread_pool_query_threads_per_group
不能超過該值。預設值 1 表示每個執行緒群組中都有一個活動的查詢執行緒,這對許多負載都適用。當您使用高並發執行緒池演算法 (
thread_pool_algorithm = 1
) 時,如果您因長時間執行的交易而遇到較慢的響應時間,請考慮增加該值。需要
CONNECTION_ADMIN
權限才能在執行階段設定thread_pool_query_threads_per_group
。如果在執行階段降低
thread_pool_query_threads_per_group
的值,則目前正在執行使用者查詢的執行緒將被允許完成,然後移動到保留池或終止。如果您在執行階段增加該值,且執行緒群組需要更多執行緒,則這些執行緒會盡可能從保留池中取得,否則會建立這些執行緒。HeatWave Service 使用此變數,此變數僅適用於 MySQL Enterprise Edition,且 MySQL 8.4 不支援。
-
命令列格式 --thread-pool-size=#
系統變數 thread_pool_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 16
最小值 1
最大值 512
執行緒池中的執行緒群組數。這是控制執行緒池效能的最重要參數。它會影響可以同時執行的語句數量。如果指定了超出允許值範圍的值,則執行緒池外掛程式不會載入,並且伺服器會將訊息寫入錯誤記錄檔。
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
-
命令列格式 --thread-pool-stall-limit=#
系統變數 thread_pool_stall_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 6
最小值 4
最大值 600
單位 毫秒 * 10 此變數會影響正在執行的語句。該值是一個語句在開始執行後必須完成的時間量,之後它會被定義為已停滯,此時執行緒池允許執行緒群組開始執行另一個語句。該值以 10 毫秒為單位測量,因此預設值 6 表示 60 毫秒。短的等待值允許執行緒更快地啟動。短值也更適合避免死鎖情況。長的等待值對於包含長時間執行語句的工作負載很有用,以避免在目前語句執行時啟動太多新語句。
此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」。
-
命令列格式 --thread-pool-transaction-delay
系統變數 thread_pool_transaction_delay
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 300000
執行新交易之前的延遲時間,以毫秒為單位。最大值為 300000(5 分鐘)。
在並行交易由於資源競爭而影響其他操作效能的情況下,可以使用交易延遲。例如,如果並行交易影響索引建立或線上緩衝池調整大小操作,則您可以設定交易延遲以減少這些操作執行時的資源競爭。
工作執行緒會在執行新交易之前休眠
thread_pool_transaction_delay
指定的毫秒數。thread_pool_transaction_delay
設定不會影響從特權連線(指派給Admin
執行緒群組的連線)發出的查詢。這些查詢不受設定的交易延遲的影響。 -
命令列格式 --thread-stack=#
系統變數 thread_stack
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 1048576
最小值 131072
最大值(64 位元平台) 18446744073709550592
最大值(32 位元平台) 4294966272
單位 位元組 區塊大小 1024
每個執行緒的堆疊大小。預設值足以用於正常操作。如果執行緒堆疊大小太小,它會限制伺服器可以處理的 SQL 語句的複雜性、預存程序的遞迴深度以及其他耗用記憶體的動作。
-
目前的時區。此變數用於初始化每個連線的客戶端的時區。預設情況下,此變數的初始值為
'SYSTEM'
(表示 「使用system_time_zone
的值」)。可以使用--default-time-zone
選項在伺服器啟動時明確指定該值。請參閱 第 7.1.15 節「MySQL 伺服器時區支援」。注意如果設定為
SYSTEM
,則每個需要時區計算的 MySQL 函數呼叫都會進行系統程式庫呼叫以確定目前的系統時區。此呼叫可能受全域互斥鎖保護,導致競爭。 -
設定此用戶端的時間。如果您使用二進位記錄檔還原列,則可以使用此設定取得原始時間戳記。
timestamp_value
應該是 Unix epoch 時間戳記(類似於UNIX_TIMESTAMP()
傳回的值,而不是'
格式的值)或YYYY-MM-DD hh:mm:ss
'DEFAULT
。將
timestamp
設定為常數值會使其保留該值,直到再次變更為止。將timestamp
設定為DEFAULT
會使其值為存取時的目前日期和時間。timestamp
是DOUBLE
而不是BIGINT
,因為其值包含微秒部分。最大值對應於 UTC 時間'2038-01-19 03:14:07'
,與TIMESTAMP
資料類型相同。SET timestamp
會影響NOW()
傳回的值,但不會影響SYSDATE()
傳回的值。這表示二進位記錄檔中的時間戳記設定對SYSDATE()
的調用沒有影響。伺服器可以使用--sysdate-is-now
選項啟動,使SYSDATE()
成為NOW()
的同義字,在這種情況下,SET timestamp
會影響這兩個函數。 tls_certificates_enforced_validation
命令列格式 --tls-certificates-enforced-validation[={OFF|ON}]
系統變數 tls_certificates_enforced_validation
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
在啟動期間,如果命令列中未提供檔案位置,則伺服器會確保每個所需的 SSL 憑證檔案的位置都存在於預設資料目錄中。但是,伺服器不會驗證憑證檔案,因此可以使用無效的憑證啟動。
tls_certificates_enforced_validation
系統變數控制是否在啟動時強制執行憑證驗證。當啟用強制執行驗證時,發現無效憑證會停止啟動執行。預設情況下,憑證驗證強制執行會停用 (OFF
)。可以透過在命令列上使用
--tls-certificates-enforced-validation
選項(帶或不帶ON
值)來啟用強制執行驗證。在啟用強制執行驗證的情況下,也會在透過ALTER INSTANCE RELOAD TLS
陳述式重新載入憑證時驗證憑證。此系統變數無法在重新開機後持續存在。如需更多資訊,請參閱設定憑證驗證強制執行。-
命令列格式 --tls-ciphersuites=ciphersuite_list
系統變數 tls_ciphersuites
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
伺服器允許用於使用 TLSv1.3 加密連線的密碼套件。該值是零或多個以冒號分隔的密碼套件名稱列表,這些名稱來自此處列出的名稱。
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
當設定此變數時,嘗試包含未在此處顯示的任何密碼清單中的值會引發錯誤 (
ER_BLOCKED_CIPHER
)。可為此變數命名的密碼套件取決於用於編譯 MySQL 的 SSL 函式庫。如果未設定此變數,其預設值為
NULL
,這表示伺服器允許預設的密碼套件集。如果將此變數設定為空字串,則不會啟用任何密碼套件,並且無法建立加密連線。如需更多資訊,請參閱第 8.3.2 節,「加密連線 TLS 協定和密碼」。 -
命令列格式 --tls-version=protocol_list
系統變數 tls_version
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 TLSv1.2,TLSv1.3
伺服器允許用於加密連線的協定。該值是一個或多個以逗號分隔的協定名稱列表,這些名稱不區分大小寫。可為此變數命名的協定取決於用於編譯 MySQL 的 SSL 函式庫。應選擇允許的協定,以避免在列表中留下「漏洞」。如需詳細資訊,請參閱第 8.3.2 節,「加密連線 TLS 協定和密碼」。
可以在執行時修改此變數,以影響伺服器用於新連線的 TLS 環境。請參閱加密連線的伺服器端執行階段組態和監控。
重要MySQL 8.4 不支援 TLSv1 和 TLSv1.1 連線協定。如需更多資訊,請參閱移除對 TLSv1 和 TLSv1.1 協定的支援。
如果 MySQL Server 是使用 OpenSSL 1.1.1 或更高版本編譯的,則 MySQL 8.4 中提供對 TLSv1.3 協定的支援。伺服器會在啟動時檢查 OpenSSL 的版本,如果低於 1.1.1,則會從系統變數的預設值中移除 TLSv1.3。在這種情況下,預設值為
TLSv1.2
。
將此變數設定為空字串會停用加密連線。
-
命令列格式 --tmp-table-size=#
系統變數 tmp_table_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 16777216
最小值 1024
最大值 18446744073709551615
單位 位元組 定義
MEMORY
和TempTable
儲存引擎建立的內部記憶體暫存表格的最大大小。如果內部記憶體暫存表格超過此大小,則會自動轉換為磁碟上的內部暫存表格。tmp_table_size
變數不適用於使用者建立的MEMORY
表格。不支援使用者建立的TempTable
表格。當使用
MEMORY
儲存引擎作為內部記憶體暫存表格時,實際的大小限制為tmp_table_size
和max_heap_table_size
中較小的值。max_heap_table_size
設定不適用於TempTable
表格。如果您執行許多進階的
GROUP BY
查詢,並且擁有大量記憶體,請增加tmp_table_size
(以及在使用MEMORY
儲存引擎作為內部記憶體暫存表格時,必要時增加max_heap_table_size
)的值。您可以透過比較
Created_tmp_disk_tables
和Created_tmp_tables
的值,來比較建立的內部磁碟暫存表格數量與建立的內部暫存表格總數。 -
用於建立暫存檔案的目錄路徑。如果您的預設
/tmp
目錄位於太小而無法容納暫存表格的分割區上,這可能很有用。此變數可以設定為以循環方式使用的多個路徑列表。在 Unix 上,路徑應以冒號字元 (:
) 分隔,而在 Windows 上則應以分號字元 (;
) 分隔。tmpdir
可以是非永久的位置,例如基於記憶體之檔案系統上的目錄,或伺服器主機重新啟動時會清除的目錄。如果 MySQL 伺服器作為副本,並且您使用非永久位置作為tmpdir
,請考慮使用replica_load_tmpdir
變數為副本設定不同的暫存目錄。對於副本,用於複製LOAD DATA
陳述式的暫存檔案會儲存在此目錄中,因此在永久位置中,它們可以在機器重新啟動後存活下來,儘管如果暫存檔案已移除,則複製現在可以在重新啟動後繼續。如需更多關於暫存檔案儲存位置的資訊,請參閱第 B.3.3.5 節,「MySQL 儲存暫存檔案的位置」。
-
命令列格式 --transaction-alloc-block-size=#
系統變數 transaction_alloc_block_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 1024
最大值 131072
單位 位元組 區塊大小 1024
需要記憶體的每個交易記憶體集區所增加的位元組數。請參閱
transaction_prealloc_size
的描述。 -
命令列格式 --transaction-isolation=name
系統變數 transaction_isolation
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 REPEATABLE-READ
有效值 READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
交易隔離層級。預設值為
REPEATABLE-READ
。交易隔離層級有三個範圍:全域、會期和下一個交易。這種三範圍實作會導致一些非標準的隔離層級指派語意,如下所述。
若要在啟動時設定全域交易隔離層級,請使用
--transaction-isolation
伺服器選項。在執行階段,可以使用
SET
陳述式直接設定隔離層級,以將值指派給transaction_isolation
系統變數,或者使用SET TRANSACTION
陳述式間接設定。如果您將transaction_isolation
直接設定為包含空格的隔離層級名稱,則名稱應以引號括住,並以破折號取代空格。例如,使用此SET
陳述式設定全域值SET GLOBAL transaction_isolation = 'READ-COMMITTED';
設定全域
transaction_isolation
值會設定所有後續會期的隔離層級。現有會期不受影響。若要設定會期或下一個層級的
transaction_isolation
值,請使用SET
陳述式。對於大多數會期系統變數,這些陳述式是設定值的等效方法SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如先前所述,交易隔離層級除了全域和會期範圍之外,還有下一個交易範圍。為了讓可以設定下一個交易範圍,用於指派會期系統變數值的
SET
語法對transaction_isolation
具有非標準的語意若要設定會期隔離層級,請使用以下任何語法
SET @@SESSION.transaction_isolation = value; SET SESSION transaction_isolation = value; SET transaction_isolation = value;
對於每個語法,都會套用這些語意
設定會期中執行之所有後續交易的隔離層級。
允許在交易中執行,但不影響當前正在進行的交易。
如果在交易之間執行,則會覆寫任何先前設定下一個交易隔離層級的陳述式。
對應於
SET SESSION TRANSACTION ISOLATION LEVEL
(使用SESSION
關鍵字)。
若要設定下一個交易隔離層級,請使用此語法
SET @@transaction_isolation = value;
對於該語法,會套用這些語意
僅設定會期中執行的下一個單一交易的隔離層級。
後續交易會還原為會期隔離層級。
不允許在交易中執行。
對應於
SET TRANSACTION ISOLATION LEVEL
(不使用SESSION
關鍵字)。
關於
SET TRANSACTION
及其與transaction_isolation
系統變數的關係,請參閱 章節 15.3.7,「SET TRANSACTION 陳述式」。 -
命令列格式 --transaction-prealloc-size=#
已棄用 是 系統變數 transaction_prealloc_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 4096
最小值 1024
最大值 131072
單位 位元組 區塊大小 1024
有一個每個交易的記憶體池,從中分配各種交易相關的記憶體。此記憶體池的初始大小(以位元組為單位)為
transaction_prealloc_size
。若每次分配時,因為記憶體池可用記憶體不足而無法滿足,則記憶體池會增加transaction_alloc_block_size
個位元組。當交易結束時,記憶體池會截斷至transaction_prealloc_size
個位元組。若將transaction_prealloc_size
設定得足夠大,以容納單一交易中的所有陳述式,便可避免多次呼叫malloc()
。transaction_prealloc_size
已被棄用,設定此變數不再有任何效果。預計在 MySQL 未來的版本中將移除transaction_prealloc_size
。 -
命令列格式 --transaction-read-only[={OFF|ON}]
系統變數 transaction_read_only
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
交易存取模式。值可以是
OFF
(讀/寫;預設值)或ON
(唯讀)。交易存取模式有三個範圍:全域、工作階段和下一個交易。這種三範圍的實作會導致一些非標準的存取模式指派語意,如下所述。
若要在啟動時設定全域交易存取模式,請使用
--transaction-read-only
伺服器選項。在執行階段,可以使用
SET
陳述式,將值指派給transaction_read_only
系統變數,或者間接地使用SET TRANSACTION
陳述式,直接設定存取模式。例如,使用這個SET
陳述式來設定全域值SET GLOBAL transaction_read_only = ON;
設定全域
transaction_read_only
值會設定所有後續工作階段的存取模式。現有工作階段不受影響。若要設定工作階段或下一層級的
transaction_read_only
值,請使用SET
陳述式。對於大多數工作階段系統變數而言,這些陳述式是設定值的等效方式SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如先前所述,交易存取模式除了全域和工作階段範圍之外,還有下一個交易範圍。為了能設定下一個交易範圍,用於指派工作階段系統變數值的
SET
語法對於transaction_read_only
具有非標準的語意,若要設定工作階段存取模式,請使用下列任何一種語法
SET @@SESSION.transaction_read_only = value; SET SESSION transaction_read_only = value; SET transaction_read_only = value;
對於每個語法,都會套用這些語意
設定工作階段內所有後續交易的存取模式。
允許在交易中執行,但不影響當前正在進行的交易。
若在交易之間執行,則會覆寫任何先前的陳述式,該陳述式會設定下一個交易存取模式。
對應於
SET SESSION TRANSACTION {READ WRITE | READ ONLY}
(具有SESSION
關鍵字)。
若要設定下一個交易存取模式,請使用此語法
SET @@transaction_read_only = value;
對於該語法,會套用這些語意
僅設定工作階段內執行的下一個單一交易的存取模式。
後續交易會還原為工作階段存取模式。
不允許在交易中執行。
對應於
SET TRANSACTION {READ WRITE | READ ONLY}
(不含SESSION
關鍵字)。
關於
SET TRANSACTION
及其與transaction_read_only
系統變數的關係,請參閱 章節 15.3.7,「SET TRANSACTION 陳述式」。 -
系統變數 unique_checks
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
若設定為 1(預設值),則會執行
InnoDB
資料表中次要索引的唯一性檢查。若設定為 0,則儲存引擎可以假設輸入資料中沒有重複的索引鍵。如果您確定您的資料沒有違反唯一性,則可以將此設定為 0,以加速大量資料表匯入InnoDB
的速度。將此變數設定為 0 並不要求儲存引擎忽略重複索引鍵。引擎仍然可以檢查是否有重複索引鍵,並在偵測到時發出重複索引鍵錯誤。
-
命令列格式 --updatable-views-with-limit[={OFF|ON}]
系統變數 updatable_views_with_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 1
當檢視表不包含基礎資料表中定義的主索引鍵的所有欄位時,如果更新陳述式包含
LIMIT
子句,則此變數會控制是否可以更新檢視表。(此類更新通常由 GUI 工具產生。)更新是UPDATE
或DELETE
陳述式。此處的主索引鍵表示PRIMARY KEY
或UNIQUE
索引,其中沒有任何欄位可以包含NULL
。此變數可以有兩個值
1
或YES
:僅發出警告(而非錯誤訊息)。這是預設值。0
或NO
:禁止更新。
-
系統變數 use_secondary_engine
範圍 工作階段 動態 是 SET_VAR
提示適用是 類型 列舉 預設值 ON
有效值 OFF
ON
FORCED
供未來使用。
是否要使用次要引擎執行查詢。
用於 HeatWave。請參閱HeatWave 使用者指南。
validate_password.
xxx
validate_password
元件會實作一組系統變數,其名稱形式為validate_password.
。這些變數會影響該元件的密碼測試;請參閱 章節 8.4.3.2,「密碼驗證選項和變數」。xxx
伺服器的版本號碼。此值也可能包含表示伺服器組建或組態資訊的後綴。
-debug
表示伺服器是啟用偵錯支援所組建的。-
系統變數 version_comment
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 CMake 組態程式有一個
COMPILATION_COMMENT_SERVER
選項,允許在組建 MySQL 時指定註解。此變數包含該註解的值。 -
系統變數 version_compile_machine
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 伺服器二進位的類型。
-
系統變數 version_compile_os
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 MySQL 組建時所在的作業系統類型。
-
系統變數 version_compile_zlib
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 編譯時內建的
zlib
程式庫版本。 -
命令列格式 --wait-timeout=#
系統變數 wait_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 28800
最小值 1
最大值 (Windows) 2147483
最大值(其他) 31536000
單位 秒 伺服器在關閉非互動式連線之前,等待活動的秒數。
在執行緒啟動時,工作階段
wait_timeout
值會從全域wait_timeout
值或從全域interactive_timeout
值初始化,具體取決於用戶端的類型(如mysql_real_connect()
的CLIENT_INTERACTIVE
連線選項所定義)。另請參閱interactive_timeout
。 導致最後一個產生訊息的陳述式產生錯誤、警告和註解的數量。此變數為唯讀。請參閱 章節 15.7.7.41,「SHOW WARNINGS 陳述式」。
-
命令列格式 --windowing-use-high-precision[={OFF|ON}]
系統變數 windowing_use_high_precision
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
是否在不損失精確度的情況下計算視窗作業。請參閱 章節 10.2.1.21,「視窗函式最佳化」。
-
命令列格式 --xa-detach-on-prepare[={OFF|ON}]
系統變數 xa_detach_on_prepare
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
當設定為
ON
(已啟用)時,所有 XA 交易都會在XA PREPARE
時與連線(工作階段)分離(中斷連線)。這表示 XA 交易可以由另一個連線認可或回復,即使原始連線尚未終止,而此連線可以開始新的交易。暫時資料表不能在分離的 XA 交易內使用。
當此設定為
OFF
(已停用)時,XA 交易會嚴格地與相同連線關聯,直到工作階段中斷連線。建議您允許啟用它(預設行為)以進行複寫。如需更多資訊,請參閱 章節 15.3.8.2,「XA 交易狀態」。