文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  伺服器系統變數

7.1.8 伺服器系統變數

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 節,「使用系統變數」

如需其他系統變數資訊,請參閱以下章節

注意

以下某些變數描述會提到啟用停用變數。這些變數可以使用 SET 陳述式將其設定為 ON1 來啟用,或設定為 OFF0 來停用。布林變數可以在啟動時設定為值 ONTRUEOFFFALSE (不區分大小寫),以及 10。請參閱第 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

    命令列格式 --activate-all-roles-on-login[={OFF|ON}]
    系統變數 activate_all_roles_on_login
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    是否在使用者登入伺服器時啟用自動啟動所有已授與的角色

    已授與的角色包括明確授與使用者的角色和在 mandatory_roles 系統變數值中命名的角色。

    activate_all_roles_on_login 僅在登入時,以及在以定義者內容執行的預存程式和檢視的執行開始時適用。若要變更工作階段中的作用中角色,請使用 SET ROLE。若要變更預存程式的作用中角色,程式主體應執行 SET ROLE

  • admin_address

    命令列格式 --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 系統變數,但有以下差異

  • admin_port

    命令列格式 --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

    命令列格式 --admin-ssl-ca=file_name
    系統變數 admin_ssl_ca
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    admin_ssl_ca 系統變數類似於 ssl_ca,但它適用於管理連線介面,而不是主連線介面。如需設定管理介面加密支援的相關資訊,請參閱管理介面加密連線支援

  • admin_ssl_capath

    命令列格式 --admin-ssl-capath=dir_name
    系統變數 admin_ssl_capath
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱
    預設值 NULL

    admin_ssl_capath 系統變數類似於 ssl_capath,但它適用於管理連線介面,而不是主連線介面。如需設定管理介面加密支援的相關資訊,請參閱管理介面加密連線支援

  • admin_ssl_cert

    命令列格式 --admin-ssl-cert=file_name
    系統變數 admin_ssl_cert
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    admin_ssl_cert 系統變數與 ssl_cert 類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援

  • admin_ssl_cipher

    命令列格式 --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

    命令列格式 --admin-ssl-crl=file_name
    系統變數 admin_ssl_crl
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    admin_ssl_crl 系統變數與 ssl_crl 類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援

  • admin_ssl_crlpath

    命令列格式 --admin-ssl-crlpath=dir_name
    系統變數 admin_ssl_crlpath
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱
    預設值 NULL

    admin_ssl_crlpath 系統變數與 ssl_crlpath 類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援

  • admin_ssl_key

    命令列格式 --admin-ssl-key=file_name
    系統變數 admin_ssl_key
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    admin_ssl_key 系統變數與 ssl_key 類似,但它適用於管理連線介面,而非主要連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援

  • admin_tls_ciphersuites

    命令列格式 --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

    命令列格式 --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

    命令列格式 --authentication-policy=value
    系統變數 authentication_policy
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 *,,

    此變數用於管理多因素驗證 (MFA) 功能。它適用於 CREATE USERALTER USER 陳述式的驗證因素相關子句,這些陳述式用於管理 MySQL 帳戶定義,其中因素對應於與帳戶關聯的驗證方法或外掛程式

    • authentication_policy 控制帳戶可能擁有的驗證因素數量。也就是說,它控制哪些因素是必需的或允許的。

    • authentication_policy 也控制每個因素允許哪些外掛程式(或方法)。

    • authentication_policy 決定未明確命名外掛程式的驗證規範的預設驗證外掛程式。

    因為 authentication_policy 僅在建立或變更帳戶時適用,因此變更其值對現有使用者帳戶沒有影響。

    注意

    雖然 authentication_policy 系統變數對 CREATE USERALTER 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 的格式為 user_id@computer_name,且不需要在任何地方註冊即可使用。此 UPN 會由伺服器在驗證交握開始時傳送。

    此變數控制伺服器是否在初始質詢中傳送 UPN。依預設,此變數為啟用。基於安全性考量,可以停用此變數,以避免以明文方式將伺服器的帳戶名稱傳送給用戶端。如果停用此變數,伺服器一律會在第一個質詢中傳送 0x00 位元組,用戶端不會指定 targetName,因此會使用 NTLM 驗證。

    如果伺服器無法取得其 UPN (這主要發生在不支援 Kerberos 驗證的環境中),則伺服器不會傳送 UPN,且會使用 NTLM 驗證。

  • autocommit

    命令列格式 --autocommit[={OFF|ON}]
    系統變數 autocommit
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    自動提交模式。如果設定為 1,對表格的所有變更會立即生效。如果設定為 0,您必須使用 COMMIT 來接受交易,或使用 ROLLBACK 來取消交易。如果 autocommit 為 0 且您將其變更為 1,MySQL 會自動 COMMIT 任何開啟的交易。開始交易的另一種方式是使用 START TRANSACTIONBEGIN 陳述式。請參閱第 15.3.1 節,「START TRANSACTION、COMMIT 和 ROLLBACK 陳述式」

    依預設,用戶端連線會以 autocommit 設定為 1 開始。若要使用戶端以預設值 0 開始,請使用 --autocommit=0 選項啟動伺服器,設定全域 autocommit 值。若要使用選項檔設定變數,請包含下列幾行:

    [mysqld]
    autocommit=0
  • automatic_sp_privileges

    命令列格式 --automatic-sp-privileges[={OFF|ON}]
    系統變數 automatic_sp_privileges
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    當此變數的值為 1 (預設值) 時,如果使用者還無法執行和變更或捨棄常式,伺服器會自動將 EXECUTEALTER ROUTINE 權限授與儲存常式的建立者。(捨棄常式需要 ALTER ROUTINE 權限。)當常式捨棄時,伺服器也會自動從建立者中捨棄這些權限。如果 automatic_sp_privileges 為 0,則伺服器不會自動新增或捨棄這些權限。

    常式的建立者是執行該常式的 CREATE 陳述式的帳戶。這可能與常式定義中指定為 DEFINER 的帳戶不同。

    如果您使用 --skip-new 啟動 mysqldautomatic_sp_privileges 會設定為 OFF

    另請參閱第 27.2.2 節,「儲存常式和 MySQL 權限」

  • auto_generate_certs

    命令列格式 --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_keyscaching_sha2_password_auto_generate_rsa_keys 系統變數是相關的,但會控制透過未加密連線使用 RSA 安全交換密碼所需的 RSA 金鑰配對檔案的自動產生。

  • back_log

    命令列格式 --back-log=#
    系統變數 back_log
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 -1 (表示自動調整大小;請勿指派此常值)
    最小值 1
    最大值 65535

    MySQL 可以擁有的未完成連線要求的數目。當主要 MySQL 執行緒在很短的時間內收到大量連線要求時,就會發揮作用。然後,主要執行緒需要一些時間 (雖然非常短) 來檢查連線並啟動新的執行緒。back_log 值會指出在 MySQL 暫時停止回覆新要求之前,在這段短時間內可以堆疊多少要求。只有在您預期在短時間內有大量連線時,才需要增加此值。

    換句話說,此值是傳入 TCP/IP 連線的接聽佇列的大小。您的作業系統對此佇列的大小有其限制。《Unix listen() 系統呼叫》的使用手冊頁面應有更多詳細資訊。請檢查您的作業系統文件,以取得此變數的最大值。back_log 的設定值不能高於您的作業系統限制。

    預設值為 max_connections 的值,可讓允許的待辦項目調整為允許的最大連線數。

  • basedir

    命令列格式 --basedir=dir_name
    系統變數 basedir
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱
    預設值 mysqld 安裝目錄的父目錄

    MySQL 安裝基礎目錄的路徑。

  • big_tables

    命令列格式 --big-tables[={OFF|ON}]
    系統變數 big_tables
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果啟用,伺服器會將所有暫存表格儲存在磁碟上,而不是記憶體中。這會防止大多數需要大型暫存表格的 SELECT 作業發生 表格 tbl_name 已滿 錯誤,但也會減慢記憶體表格足以應付的查詢速度。

    新連線的預設值為 OFF(使用記憶體中的暫存表)。正常情況下,永遠不應該啟用此變數。當記憶體中的內部暫存表由 TempTable 儲存引擎(預設)管理,且 TempTable 儲存引擎可佔用的最大記憶體量超出時,TempTable 儲存引擎會開始將資料儲存到磁碟上的暫存檔案。當記憶體中的暫存表由 MEMORY 儲存引擎管理時,記憶體中的表會根據需要自動轉換為基於磁碟的表。如需更多資訊,請參閱第 10.4.4 節「MySQL 中內部暫存表的使用」

  • bind_address

    命令列格式 --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=#
    系統變數 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 值為 ECBCBCCFB1CFB8CFB128OFB

    例如,此語句會導致 AES 加密函式使用 256 位元的金鑰長度和 CBC 模式

    SET block_encryption_mode = 'aes-256-cbc';

    如果嘗試將 block_encryption_mode 設定為包含不支援的金鑰長度或 SSL 程式庫不支援的模式的值,則會發生錯誤。

  • build_id

    系統變數 build_id
    範圍 全域
    動態
    SET_VAR 提示適用
    平台特定 Linux

    這是由連結器在 Linux 系統上使用 -DWITH_BUILD_ID=ON(預設為啟用)編譯伺服器時產生的 160 位元 SHA1 簽章,並轉換為十六進位字串。此唯讀值用作唯一的組建 ID,並在啟動時寫入伺服器記錄檔中。

    除了 Linux 以外的平台不支援 build_id

  • bulk_insert_buffer_size

    命令列格式 --bulk-insert-buffer-size=#
    系統變數 bulk_insert_buffer_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 8388608
    最小值 0
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295
    單位 位元組/執行緒

    MyISAM 使用特殊的樹狀快取,使將資料新增到非空表時,INSERT ... SELECTINSERT ... 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_keyscaching_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

    系統變數 character_set_client
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb4

    來自用戶端的陳述式所使用的字元集。此變數的工作階段值是在用戶端連線至伺服器時,使用用戶端請求的字元集來設定。(許多用戶端支援 --default-character-set 選項,以允許明確指定此字元集。另請參閱第 12.4 節,「連線字元集和校對」。)當用戶端請求的值未知或不可用,或伺服器設定為忽略用戶端請求時,會使用此變數的全域值來設定工作階段值。當用戶端請求伺服器不知道的字元集時,可能會發生這種情況,例如,當啟用日語的用戶端連線到未設定 sjis 支援的伺服器時,請求 sjis

    某些字元集無法用作用戶端字元集。嘗試將它們用作 character_set_client 值會產生錯誤。請參閱不允許的用戶端字元集

  • character_set_connection

    系統變數 character_set_connection
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb4

    用於未指定字元集引導詞的常值和數字到字串轉換的字元集。有關引導詞的資訊,請參閱第 12.3.8 節,「字元集引導詞」

  • character_set_database

    系統變數 character_set_database
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb4
    腳註 此選項是動態的,但應僅由伺服器設定。您不應手動設定此變數。

    預設資料庫使用的字元集。每當預設資料庫變更時,伺服器都會設定此變數。如果沒有預設資料庫,則此變數的值與 character_set_server 相同。

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

    全域 character_set_databasecollation_database 系統變數已過時;預計會在未來版本的 MySQL 中移除它們。

    將值指派給工作階段 character_set_databasecollation_database 系統變數已過時,而且指派會產生警告。預計工作階段變數會在未來版本的 MySQL 中變為唯讀(且對它們的指派會產生錯誤),在該版本中,仍然可以存取工作階段變數以判斷預設資料庫的資料庫字元集和校對。

  • character_set_filesystem

    命令列格式 --character-set-filesystem=名稱
    系統變數 character_set_filesystem
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 二進位

    檔案系統字元集。此變數用於解釋參照檔案名稱的字串常值,例如在 LOAD DATASELECT ... INTO OUTFILE 陳述式以及 LOAD_FILE() 函數中。在嘗試開啟檔案之前,此類檔案名稱會從 character_set_client 轉換為 character_set_filesystem。預設值為 binary,表示不會發生轉換。對於允許使用多位元組檔案名稱的系統,其他值可能更合適。例如,如果系統使用 UTF-8 表示檔案名稱,請將 character_set_filesystem 設定為 'utf8mb4'

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • character_set_results

    系統變數 character_set_results
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb4

    用於將查詢結果返回給用戶端的字元集。這包括結果資料 (例如資料行值)、結果中繼資料 (例如資料行名稱) 和錯誤訊息。

  • character_set_server

    命令列格式 --character-set-server=名稱
    系統變數 character_set_server
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb4

    伺服器的預設字元集。請參閱第 12.15 節,「字元集組態」。如果您設定此變數,則還應設定 collation_server 以指定字元集的校對。

  • character_set_system

    系統變數 character_set_system
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb3

    伺服器用於儲存識別碼的字元集。值永遠為 utf8mb3

  • character_sets_dir

    命令列格式 --character-sets-dir=目錄名稱
    系統變數 character_sets_dir
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱

    安裝字元集的目錄。請參閱第 12.15 節,「字元集組態」

  • check_proxy_users

    命令列格式 --check-proxy-users[={OFF|ON}]
    系統變數 check_proxy_users
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    某些驗證外掛程式會自行實作用戶端代理使用者對應 (例如,PAM 和 Windows 驗證外掛程式)。其他驗證外掛程式預設不支援代理使用者。在這些外掛程式中,有些可以請求 MySQL 伺服器本身根據授權的代理權限對應代理使用者:mysql_native_password (已過時)、sha256_password (已過時)。

    如果啟用 check_proxy_users 系統變數,則伺服器會為發出此類請求的任何驗證外掛程式執行代理使用者對應。但是,可能還需要啟用外掛程式特定的系統變數,才能利用伺服器代理使用者對應支援。

    有關使用者代理的資訊,請參閱第 8.2.19 節,「代理使用者」

  • collation_connection

    系統變數 collation_connection
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串

    連線字元集的校對。collation_connection 對於常值字串的比較很重要。對於字串與資料行值的比較,collation_connection 無關緊要,因為資料行有自己的校對,其校對優先順序較高 (請參閱第 12.8.4 節,「表示式中的校對強制轉換」)。

    使用使用者定義的校對名稱作為此變數會引發警告。

  • collation_database

    系統變數 collation_database
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb4_0900_ai_ci
    腳註 此選項是動態的,但應僅由伺服器設定。您不應手動設定此變數。

    預設資料庫使用的校對。每當預設資料庫變更時,伺服器都會設定此變數。如果沒有預設資料庫,則此變數的值與 collation_server 相同。

    全域 character_set_databasecollation_database 系統變數已過時;預計會在未來版本的 MySQL 中移除它們。

    將值指派給工作階段 character_set_databasecollation_database 系統變數已過時,而且指派會產生警告。預計工作階段變數會在未來版本的 MySQL 中變為唯讀 (且指派會產生錯誤),在該版本中,仍然可以存取工作階段變數以判斷預設資料庫的資料庫字元集和校對。

    使用使用者定義的校對名稱作為 collation_database 會引發警告。

  • collation_server

    命令列格式 --collation-server=名稱
    系統變數 collation_server
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 utf8mb4_0900_ai_ci

    伺服器的預設校對。請參閱第 12.15 節,「字元集設定」

    將此設定為使用者定義校對的名稱會引發警告。

  • completion_type

    命令列格式 --completion-type=#
    系統變數 completion_type
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 NO_CHAIN
    有效值

    NO_CHAIN

    CHAIN

    RELEASE

    0

    1

    2

    交易完成類型。此變數可接受下表顯示的值。可以使用名稱值或對應的整數值來指定變數。

    說明
    NO_CHAIN (或 0) COMMITROLLBACK 不受影響。這是預設值。
    CHAIN (或 1) COMMITROLLBACK 分別等同於 COMMIT AND CHAINROLLBACK AND CHAIN。(新的交易會立即開始,其隔離層級與剛終止的交易相同。)
    RELEASE (或 2) COMMITROLLBACK 分別等同於 COMMIT RELEASEROLLBACK RELEASE。(伺服器會在終止交易後中斷連線。)

    completion_type 會影響以 START TRANSACTIONBEGIN 開始,並以 COMMITROLLBACK 結束的交易。它不適用於執行第 15.3.3 節,「造成隱含 COMMIT 的陳述式」中列出的陳述式所造成的隱含提交。它也不適用於 XA COMMITXA ROLLBACK 或當 autocommit=1 時。

  • component_scheduler.enabled

    命令列格式 --component-scheduler.enabled[=value]
    系統變數 component_scheduler.enabled
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    在啟動時設定為 OFF 時,背景執行緒不會啟動。仍然可以排程工作,但在啟用 component_scheduler 之前,它們不會執行。在啟動時設定為 ON 時,元件會完全運作。

    也可以動態設定值以取得下列效果

    • ON 會啟動背景執行緒,該執行緒會立即開始服務佇列。

    • OFF 會發出背景執行緒終止的訊號,該執行緒會等待其結束。背景執行緒會在存取佇列以檢查是否有要執行的工作之前,檢查終止旗標。

  • concurrent_insert

    命令列格式 --concurrent-insert[=value]
    系統變數 concurrent_insert
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 AUTO
    有效值

    NEVER

    AUTO

    ALWAYS

    0

    1

    2

    如果 AUTO (預設值),MySQL 允許 INSERTSELECT 陳述式對資料檔案中間沒有可用區塊的 MyISAM 表格同時執行。

    此變數可接受下表顯示的值。可以使用名稱值或對應的整數值來指定變數。

    說明
    NEVER (或 0) 停用並行插入
    AUTO (或 1) (預設) 為沒有孔洞的 MyISAM 表格啟用並行插入
    ALWAYS (或 2) 為所有 MyISAM 表格啟用並行插入,即使是那些有孔洞的表格也一樣。對於有孔洞的表格,如果它正在被另一個執行緒使用,則新列會插入到表格的末尾。否則,MySQL 會取得正常的寫入鎖定,並將列插入到孔洞中。

    如果您使用 --skip-new 啟動 mysqld,則 concurrent_insert 會設定為 NEVER

    另請參閱第 10.11.3 節,「並行插入」

  • connect_timeout

    命令列格式 --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=#
    系統變數 connection_memory_chunk_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 8192
    最小值 0
    最大值 536870912
    單位 位元組

    設定全域記憶體使用計數器 Global_connection_memory 更新的區塊大小。只有當所有使用者連線的總記憶體消耗量變動超過此數量時,才會更新狀態變數。透過設定 connection_memory_chunk_size = 0 來停用更新。

    記憶體計算不包含系統使用者 (例如 MySQL root 使用者) 使用的任何記憶體。InnoDB 緩衝池使用的記憶體也不包含在內。

    您必須擁有 SYSTEM_VARIABLES_ADMINSUPER 權限才能設定此變數。

  • connection_memory_limit

    命令列格式 --connection-memory-limit=#
    系統變數 connection_memory_limit
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 18446744073709551615
    最小值 2097152
    最大值 18446744073709551615
    單位 位元組

    設定單一使用者連線可使用的最大記憶體量。如果任何使用者連線使用量超過此數量,則會拒絕來自此連線的所有查詢,並傳回 ER_CONN_LIMIT,包括目前正在執行的任何查詢。

    此變數設定的限制不適用於系統使用者,也不適用於 MySQL root 帳戶。InnoDB 緩衝池使用的記憶體也不包含在內。

    您必須擁有 SYSTEM_VARIABLES_ADMINSUPER 權限才能設定此變數。

  • core_file

    系統變數 core_file
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果伺服器意外結束,是否寫入核心檔案。此變數由 --core-file 選項設定。

  • create_admin_listener_thread

    命令列格式 --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=#
    系統變數 cte_max_recursion_depth
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1000
    最小值 0
    最大值 4294967295

    通用資料表運算式 (CTE) 的最大遞迴深度。伺服器會終止任何遞迴層級超過此變數值的 CTE 的執行。如需詳細資訊,請參閱限制通用資料表運算式遞迴

  • datadir

    命令列格式 --datadir=dir_name
    系統變數 datadir
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱

    MySQL 伺服器資料目錄的路徑。相對路徑會以目前目錄為基準進行解析。如果您希望伺服器自動啟動 (也就是說,在您無法預先知道目前目錄的情況下),最好將 datadir 值指定為絕對路徑。

  • debug

    命令列格式 --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

    系統變數 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

    系統變數 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 排序規則

    另請參閱 第 12.9 節「Unicode 支援」

  • default_password_lifetime

    命令列格式 --default-password-lifetime=#
    系統變數 default_password_lifetime
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 65535
    單位

    此變數定義全域自動密碼過期策略。預設的 default_password_lifetime 值為 0,表示停用自動密碼過期。如果 default_password_lifetime 的值為正整數 N,則表示允許的密碼存續期;密碼必須每 N 天變更一次。

    可以使用 CREATE USERALTER USER 語句的密碼過期選項,依需要覆寫個別帳戶的全域密碼過期策略。請參閱 第 8.2.15 節「密碼管理」

  • default_storage_engine

    命令列格式 --default-storage-engine=名稱
    系統變數 default_storage_engine
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 InnoDB

    表格的預設儲存引擎。請參閱 第 18 章替代儲存引擎。此變數僅設定永久表格的儲存引擎。若要設定 TEMPORARY 表格的儲存引擎,請設定 default_tmp_storage_engine 系統變數。

    若要查看哪些儲存引擎可供使用且已啟用,請使用 SHOW ENGINES 語句或查詢 INFORMATION_SCHEMA ENGINES 表格。

    如果您在伺服器啟動時停用預設的儲存引擎,則必須將永久和 TEMPORARY 表格的預設引擎都設定為不同的引擎,否則伺服器將不會啟動。

  • default_table_encryption

    命令列格式 --default-table-encryption[={OFF|ON}]
    系統變數 default_table_encryption
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    定義在建立結構描述和一般表格空間時,未指定 ENCRYPTION 子句的情況下,套用的預設加密設定。

    default_table_encryption 變數僅適用於使用者建立的結構描述和一般表格空間。它不控制 mysql 系統表格空間的加密。

    設定 default_table_encryption 的執行階段值需要 SYSTEM_VARIABLES_ADMINTABLE_ENCRYPTION_ADMIN 權限,或已棄用的 SUPER 權限。

    default_table_encryption 支援 SET PERSISTSET PERSIST_ONLY 語法。請參閱 第 7.1.9.3 節「持續性系統變數」

    如需更多資訊,請參閱 定義結構描述和一般表格空間的預設加密

  • default_tmp_storage_engine

    命令列格式 --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=#
    系統變數 default_week_format
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 7

    用於 WEEK() 函數的預設模式值。請參閱 第 14.7 節「日期和時間函數」

  • delay_key_write

    命令列格式 --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=#
    已棄用
    系統變數 delayed_insert_limit
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 100
    最小值 1
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295

    此系統變數已棄用(因為不支援 DELAYED 插入),您應該預期它會在未來的版本中被移除。

  • delayed_insert_timeout

    命令列格式 --delayed-insert-timeout=#
    已棄用
    系統變數 delayed_insert_timeout
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 300
    最小值 1
    最大值 31536000
    單位

    此系統變數已棄用(因為不支援 DELAYED 插入),您應該預期它會在未來的版本中被移除。

  • delayed_queue_size

    命令列格式 --delayed-queue-size=#
    已棄用
    系統變數 delayed_queue_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1000
    最小值 1
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295

    此系統變數已棄用(因為不支援 DELAYED 插入),您應該預期它會在未來的版本中被移除。

  • disabled_storage_engines

    命令列格式 --disabled-storage-engines=引擎[,引擎]...
    系統變數 disabled_storage_engines
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 空字串

    此變數表示哪些儲存引擎無法用於建立表格或表格空間。例如,若要防止建立新的 MyISAMFEDERATED 表格,請在伺服器選項檔案中使用下列這些行啟動伺服器

    [mysqld]
    disabled_storage_engines="MyISAM,FEDERATED"

    預設情況下,disabled_storage_engines 為空(未停用任何引擎),但可以將其設定為一或多個引擎的逗號分隔清單(不區分大小寫)。值中命名的任何引擎都無法用於使用 CREATE TABLECREATE TABLESPACE 建立表格或表格空間,也無法與 ALTER TABLE ... ENGINEALTER TABLESPACE ... ENGINE 一起使用,以變更現有表格或表格空間的儲存引擎。嘗試這樣做會導致 ER_DISABLED_STORAGE_ENGINE 錯誤。

    disabled_storage_engines 不會限制現有資料表的其他 DDL 陳述式,例如 CREATE INDEXTRUNCATE TABLEANALYZE TABLEDROP TABLEDROP TABLESPACE。這允許平滑轉換,以便可以使用諸如 ALTER TABLE ... ENGINE permitted_engine 的方法,將使用已停用引擎的現有資料表或資料表空間遷移到允許的引擎。

    允許將 default_storage_enginedefault_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

    此變數控制伺服器如何處理密碼過期的用戶端

    有關用戶端和伺服器設定之間關於過期密碼處理的互動的更多資訊,請參閱 第 8.2.16 節「伺服器處理過期密碼」

  • div_precision_increment

    命令列格式 --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

    命令列格式 --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=#
    系統變數 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

  • error_count

    產生訊息的最後一個陳述式所導致的錯誤數。此變數為唯讀。請參閱 第 15.7.7.18 節「SHOW ERRORS 陳述式」

  • event_scheduler

    命令列格式 --event-scheduler[=value]
    系統變數 event_scheduler
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 ON
    有效值

    ON

    OFF

    DISABLED

    此變數會啟用或停用事件排程器,並啟動或停止事件排程器。可能狀態值為 ONOFFDISABLED。將事件排程器設為 OFF 與停用事件排程器不同,停用需要將狀態設定為 DISABLED。在 第 27.4.2 節「事件排程器設定」中更詳細地討論了此變數及其對事件排程器運作的影響

  • explain_format

    命令列格式 --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。就此而言,DEFAULTTRADITIONAL 會被解讀為 TREE。如果 explain_format 的值為 JSON,且發出了沒有 FORMAT 選項的 EXPLAIN ANALYZE 語句,該語句會引發錯誤 (ER_NOT_SUPPORTED_YET)。

    EXPLAINEXPLAIN 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=#
    系統變數 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 屬性或明確的 DEFAULTON UPDATE 屬性,則會自動宣告具有 DEFAULT CURRENT_TIMESTAMPON 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_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 屬性宣告任何 TIMESTAMP 欄位。必須明確指定這些屬性。

    • 表格中的第一個 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

    系統變數 external_user
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 字串

    在驗證過程中使用的外部使用者名稱,由用於驗證用戶端的插件設定。使用原生(內建)MySQL 驗證,或如果插件未設定該值,此變數為 NULL。請參閱第 8.2.19 節「Proxy Users」

  • flush

    命令列格式 --flush[={OFF|ON}]
    系統變數 flush
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果為 ON,伺服器會在每個 SQL 語句後將所有變更刷新(同步)到磁碟。通常,MySQL 只會在每個 SQL 語句後將所有變更寫入磁碟,並讓作業系統處理與磁碟的同步。請參閱第 B.3.3.3 節「如果 MySQL 持續崩潰該怎麼辦」。如果使用 --flush 選項啟動 mysqld,則此變數會設為 ON

    注意

    如果啟用 flush,則 flush_time 的值無關緊要,且變更 flush_time 對刷新行為沒有影響。

  • flush_time

    命令列格式 --flush-time=#
    系統變數 flush_time
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 31536000
    單位

    如果設定為非零值,則每隔 flush_time 秒會關閉所有表格,以釋放資源並將未刷新的資料同步到磁碟。此選項最好僅用於資源最少的系統。

    注意

    如果啟用 flush,則 flush_time 的值無關緊要,且變更 flush_time 對刷新行為沒有影響。

  • foreign_key_checks

    系統變數 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

    命令列格式 --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=#
    系統變數 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=#
    系統變數 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=#
    系統變數 ft_query_expansion_limit
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 20
    最小值 0
    最大值 1000

    要用於使用 WITH QUERY EXPANSION 執行的全文檢索搜尋的頂端相符項目數量。

  • ft_stopword_file

    命令列格式 --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

    命令列格式 --general-log[={OFF|ON}]
    系統變數 general_log
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    是否啟用一般查詢記錄。值可以是 0(或 OFF)以停用記錄,或 1(或 ON)以啟用記錄。記錄輸出的目的地由 log_output 系統變數控制;如果該值為 NONE,即使啟用記錄,也不會寫入任何記錄項目。

  • general_log_file

    命令列格式 --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 USERALTER USERSET 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_ADMINSUPER 權限才能設定此變數。

  • 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_ADMINSUPER 權限才能設定此變數。

  • group_concat_max_len

    命令列格式 --group-concat-max-len=#
    系統變數 group_concat_max_len
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1024
    最小值 4
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295

    GROUP_CONCAT() 函數允許的最大結果長度(以位元組為單位)。預設值為 1024。

  • have_compress

    如果伺服器可以使用 zlib 壓縮函式庫,則為 YES,否則為 NO。如果為否,則無法使用 COMPRESS()UNCOMPRESS() 函式。

  • have_dynamic_loading

    如果 mysqld 支援外掛程式的動態載入,則為 YES,否則為 NO。如果值為 NO,則無法使用諸如 --plugin-load 等選項在伺服器啟動時載入外掛程式,或使用 INSTALL PLUGIN 陳述式在執行時載入外掛程式。

  • have_geometry

    如果伺服器支援空間資料類型,則為 YES,否則為 NO

  • have_profiling

    如果存在陳述式效能分析功能,則為 YES,否則為 NO。如果存在,profiling 系統變數會控制此功能是否啟用或停用。請參閱 第 15.7.7.32 節,「SHOW PROFILES 陳述式」

    此變數已棄用;您應該預期它會在未來的 MySQL 版本中移除。

  • have_query_cache

    have_query_cache 已棄用,永遠具有 NO 的值,您應該預期它會在未來的 MySQL 版本中移除。

  • have_rtree_keys

    如果可以使用 RTREE 索引,則為 YES,否則為 NO。(這些用於 MyISAM 表格中的空間索引。)

  • have_statement_timeout

    系統變數 have_statement_timeout
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值

    陳述式執行逾時功能是否可用(請參閱 陳述式執行時間最佳化提示)。如果此功能使用的背景執行緒無法初始化,則值可能為 NO

  • have_symlink

    如果啟用符號連結支援,則為 YES,否則為 NO。在 Unix 上,這是支援 DATA DIRECTORYINDEX 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=#
    系統變數 host_cache_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 -1 (表示自動調整大小;請勿指派此常值)
    最小值 0
    最大值 65536

    MySQL 伺服器維護一個記憶體中的主機快取,其中包含用戶端主機名稱和 IP 位址資訊,並用於避免網域名稱系統 (DNS) 查閱;請參閱 第 7.1.12.3 節,「DNS 查閱和主機快取」

    host_cache_size 變數會控制主機快取的大小,以及公開快取內容的 Performance Schema host_cache 表格的大小。設定 host_cache_size 具有以下效果:

    • 將大小設定為 0 會停用主機快取。停用快取後,伺服器會在每次用戶端連線時執行 DNS 查閱。

    • 在執行時變更大小會導致隱式主機快取清除操作,這會清除主機快取、截斷 host_cache 表格,並取消封鎖任何封鎖的主機。

    預設值會自動調整為 128,加上 max_connections 值高達 500 的值加 1,加上 max_connections 值超過 500 時,每遞增 20 就加 1,上限為 2000。

  • hostname

    系統變數 hostname
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串

    伺服器會在啟動時將此變數設定為伺服器主機名稱。最大長度為 255 個字元。

  • identity

    此變數是 last_insert_id 變數的同義詞。它的存在是為了與其他資料庫系統相容。您可以使用 SELECT @@identity 讀取其值,並使用 SET identity 設定它。

  • init_connect

    命令列格式 --init-connect=name
    系統變數 init_connect
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串

    伺服器為每個連線的用戶端執行的字串。此字串由一個或多個 SQL 陳述式組成,並以分號字元分隔。

    對於具有 CONNECTION_ADMIN 權限(或已棄用的 SUPER 權限)的使用者,不會執行 init_connect 的內容。這樣做的目的是為了防止 init_connect 的錯誤值阻止所有用戶端連線。例如,此值可能包含語法錯誤的陳述式,從而導致用戶端連線失敗。不為具有 CONNECTION_ADMINSUPER 權限的使用者執行 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_statsmysql.table_stats 字典表格中擷取這些欄位的快取值,這比直接從儲存引擎擷取統計資料更有效率。如果快取統計資料不可用或已過期,MySQL 會從儲存引擎擷取最新的統計資料,並將其快取在 mysql.index_statsmysql.table_stats 字典表格中。後續查詢會擷取快取的統計資料,直到快取的統計資料過期。伺服器重新啟動或第一次開啟 mysql.index_statsmysql.table_stats 表格不會自動更新快取的統計資料。

    information_schema_stats_expiry 工作階段變數定義快取的統計資料過期前的時間長度。預設值為 86400 秒(24 小時),但時間長度可以延長至最多一年。

    若要隨時更新給定表格的快取值,請使用 ANALYZE TABLE

    若要始終直接從儲存引擎擷取最新的統計資料並略過快取值,請將 information_schema_stats_expiry 設定為 0

    在以下情況下,查詢統計資料欄位不會在 mysql.index_statsmysql.table_stats 字典表格中儲存或更新統計資料:

    統計資料快取可能會在多語句交易期間更新,在已知交易是否提交之前。因此,快取可能包含與已知已提交狀態不符的資訊。這可能會在 autocommit=0 或在 START TRANSACTION 之後發生。

    information_schema_stats_expiry 是一個會話變數,每個用戶端會話都可以定義自己的到期值。從儲存引擎檢索並由一個會話快取的統計資料可供其他會話使用。

    相關資訊,請參閱 第 10.2.3 節,「最佳化 INFORMATION_SCHEMA 查詢」

  • init_file

    命令列格式 --init-file=file_name
    系統變數 init_file
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱

    如果指定此變數,則此變數會命名一個包含 SQL 陳述式的檔案,這些陳述式將在啟動過程中讀取和執行。此檔案中陳述式的可接受格式支援以下結構

    • delimiter ;,將陳述式分隔符號設定為 ; 字元。

    • delimiter $$,將陳述式分隔符號設定為 $$ 字元序列。

    • 同一行上的多個陳述式,由目前的分隔符號分隔。

    • 多行陳述式。

    • # 字元到行尾的註解。

    • --  序列到行尾的註解。

    • C 樣式註解,從 /* 序列到下一個 */ 序列,包括跨多行。

    • 包含在單引號 (') 或雙引號 (") 字元中的多行字串文字。

    如果伺服器使用 --initialize--initialize-insecure 選項啟動,則它會在引導模式下運作,並且某些功能不可用,這會限制檔案中允許的陳述式。這些包括與帳戶管理相關的陳述式(例如 CREATE USERGRANT)、複製和全域交易識別碼。請參閱 第 19.1.3 節,「使用全域交易識別碼進行複製」

    伺服器啟動期間建立的執行緒用於執行諸如建立資料字典、執行升級程序和建立系統表格等任務。為了確保穩定且可預測的環境,這些執行緒會使用伺服器內建的預設值來執行某些系統變數,例如 sql_modecharacter_set_servercollation_servercompletion_typeexplicit_defaults_for_timestampdefault_table_encryption

    這些執行緒也用於執行使用 init_file 指定的任何檔案中的陳述式,當啟動伺服器時,因此這些陳述式會使用伺服器內建的預設值來執行這些系統變數。

  • innodb_xxx

    InnoDB 系統變數列在 第 17.14 節,「InnoDB 啟動選項和系統變數」中。這些變數控制 InnoDB 表格的儲存、記憶體使用和 I/O 模式的許多方面,並且現在 InnoDB 是預設儲存引擎,因此尤其重要。

  • insert_id

    當插入 AUTO_INCREMENT 值時,以下 INSERTALTER TABLE 陳述式要使用的值。這主要與二進位日誌一起使用。

  • interactive_timeout

    命令列格式 --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_ADMINSYSTEM_VARIABLES_ADMIN 權限。

  • join_buffer_size

    命令列格式 --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

    命令列格式 --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 DIRECTORYINDEX DIRECTORY 選項建立 MyISAM 表格,並且找到現有的 .MYD.MYI 檔案,MyISAM 總是會返回錯誤。它不會覆寫指定目錄中的檔案。

  • key_buffer_size

    命令列格式 --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_requestsKey_readsKey_write_requestsKey_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=#
    系統變數 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=#
    系統變數 key_cache_block_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1024
    最小值 512
    最大值 16384
    單位 位元組
    區塊大小 512

    金鑰快取中區塊的大小(以位元組為單位)。預設值為 1024。請參閱第 10.10.2 節,「MyISAM 金鑰快取」

  • key_cache_division_limit

    命令列格式 --key-cache-division-limit=#
    系統變數 key_cache_division_limit
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 100
    最小值 1
    最大值 100

    金鑰快取緩衝區清單的熱子清單和暖子清單之間的分隔點。該值是要用於暖子清單的緩衝區清單的百分比。允許的值範圍為 1 到 100。預設值為 100。請參閱第 10.10.2 節,「MyISAM 金鑰快取」

  • large_files_support

    系統變數 large_files_support
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值

    是否已使用大型檔案支援的選項編譯 mysqld

  • large_pages

    命令列格式 --large-pages[={OFF|ON}]
    系統變數 large_pages
    範圍 全域
    動態
    SET_VAR 提示適用
    平台特定 Linux
    類型 布林值
    預設值 OFF

    是否已啟用大型頁面支援(透過 --large-pages 選項)。請參閱第 10.12.3.3 節,「啟用大型頁面支援」

  • large_page_size

    系統變數 large_page_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 65535
    單位 位元組

    如果啟用大型頁面支援,則會顯示記憶體頁面的大小。大型記憶體頁面僅在 Linux 上受支援;在其他平台上,此變數的值始終為 0。請參閱第 10.12.3.3 節,「啟用大型頁面支援」

  • last_insert_id

    要從 LAST_INSERT_ID() 返回的值。當您在更新表格的陳述式中使用 LAST_INSERT_ID() 時,此值會儲存在二進位記錄中。設定此變數不會更新 mysql_insert_id() C API 函式所返回的值。

  • lc_messages

    命令列格式 --lc-messages=name
    系統變數 lc_messages
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 en_US

    用於錯誤訊息的語言環境。預設值為 en_US。伺服器會將引數轉換為語言名稱,並將其與 lc_messages_dir 的值組合,以產生錯誤訊息檔案的位置。請參閱第 12.12 節,「設定錯誤訊息語言」

  • lc_messages_dir

    命令列格式 --lc-messages-dir=dir_name
    系統變數 lc_messages_dir
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱

    錯誤訊息所在的目錄。伺服器會將該值與 lc_messages 的值一起使用,以產生錯誤訊息檔案的位置。請參閱第 12.12 節,「設定錯誤訊息語言」

  • lc_time_names

    命令列格式 --lc-time-names=value
    系統變數 lc_time_names
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串

    此變數指定控制顯示日期和月份名稱及縮寫的語言環境。此變數會影響 DATE_FORMAT()DAYNAME()MONTHNAME() 函數的輸出。語言環境名稱是 POSIX 樣式的值,例如 'ja_JP''pt_BR'。預設值為 'en_US',無論您的系統語言環境設定為何。如需更多資訊,請參閱 第 12.16 節,「MySQL 伺服器語言環境支援」

  • license

    系統變數 license
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 GPL

    伺服器擁有的授權類型。

  • local_infile

    命令列格式 --local-infile[={OFF|ON}]
    系統變數 local_infile
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    此變數控制伺服器端的 LOCAL 功能,用於 LOAD DATA 陳述式。根據 local_infile 設定,伺服器會拒絕或允許用戶端載入本機資料,而用戶端在用戶端端已啟用 LOCAL

    若要明確讓伺服器拒絕或允許 LOAD DATA LOCAL 陳述式(無論用戶端程式和程式庫在建置時或執行時如何設定),請分別以停用或啟用 local_infile 的方式啟動 mysqldlocal_infile 也可以在執行時設定。如需更多資訊,請參閱 第 8.1.6 節,「LOAD DATA LOCAL 的安全性考量」

  • lock_wait_timeout

    命令列格式 --lock-wait-timeout=#
    系統變數 lock_wait_timeout
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 31536000
    最小值 1
    最大值 31536000
    單位

    此變數指定嘗試取得中繼資料鎖定的逾時時間(以秒為單位)。允許的值範圍為 1 到 31536000(1 年)。預設值為 31536000。

    此逾時時間適用於所有使用中繼資料鎖定的陳述式。這些包括資料表、檢視、預存程序和預存函數上的 DML 和 DDL 作業,以及 LOCK TABLESFLUSH TABLES WITH READ LOCKHANDLER 陳述式。

    此逾時時間不適用於 mysql 資料庫中系統資料表的隱含存取,例如 GRANTREVOKE 陳述式修改的授權資料表,或資料表記錄陳述式。此逾時時間適用於直接存取的系統資料表,例如使用 SELECTUPDATE

    逾時值會分別適用於每次中繼資料鎖定嘗試。給定的陳述式可能需要一個以上的鎖定,因此陳述式可能會在回報逾時錯誤之前,封鎖的時間長於 lock_wait_timeout 值。發生鎖定逾時時,會回報 ER_LOCK_WAIT_TIMEOUT

    lock_wait_timeout 也定義 LOCK INSTANCE FOR BACKUP 陳述式在放棄之前等待鎖定的時間量。

  • locked_in_memory

    系統變數 locked_in_memory
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    mysqld 是否以 --memlock 鎖定在記憶體中。

  • log_error

    命令列格式 --log-error[=file_name]
    系統變數 log_error
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱

    預設錯誤記錄目的地。如果目的地是主控台,則值為 stderr。否則,目的地是檔案,且 log_error 值為檔案名稱。請參閱 第 7.4.2 節,「錯誤記錄」

  • log_error_services

    命令列格式 --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

    命令列格式 --log-error-suppression-list=value
    系統變數 log_error_suppression_list
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 空字串

    log_error_suppression_list 系統變數適用於預定用於錯誤記錄的事件,並指定當事件發生且優先順序為 WARNINGINFORMATION 時要隱藏的事件。例如,如果特定類型的警告被視為錯誤記錄中不必要的「雜訊」,因為它發生頻繁但沒有意義,則可以隱藏它。此變數會影響預設啟用的 log_filter_internal 錯誤記錄篩選器元件所執行的篩選(請參閱 第 7.5.3 節,「錯誤記錄元件」)。如果停用 log_filter_internallog_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=#
    系統變數 log_error_verbosity
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 2
    最小值 1
    最大值 3

    log_error_verbosity 系統變數指定用於處理預定用於錯誤記錄之事件的詳細程度。此變數會影響預設啟用的 log_filter_internal 錯誤記錄篩選器元件所執行的篩選(請參閱 第 7.5.3 節,「錯誤記錄元件」)。如果停用 log_filter_internallog_error_verbosity 則不會有任何作用。

    預定用於錯誤記錄的事件具有 ERRORWARNINGINFORMATION 的優先順序。log_error_verbosity 會根據允許寫入記錄的訊息優先順序來控制詳細程度,如下表所示。

    log_error_verbosity 值 允許的訊息優先順序
    1 ERROR
    2 ERRORWARNING
    3 ERRORWARNINGINFORMATION

    還有一個 SYSTEM 的優先順序。關於非錯誤情況的系統訊息會列印到錯誤記錄,而無論 log_error_verbosity 值為何。這些訊息包括啟動和關閉訊息,以及對設定的一些重大變更。

    log_error_verbosity 的效果會與 log_error_suppression_list 的效果結合。如需更多資訊,請參閱 第 7.4.2.5 節,「基於優先順序的錯誤記錄篩選 (log_filter_internal)」

  • log_output

    命令列格式 --log-output=name
    系統變數 log_output
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 設定
    預設值 FILE
    有效值

    TABLE

    FILE

    NONE

    一般查詢日誌和慢查詢日誌輸出的目的地。該值是一個列表,包含一個或多個以逗號分隔的單字,可選自 TABLEFILENONETABLE 選擇將日誌記錄到 mysql 系統架構中的 general_logslow_log 表中。FILE 選擇將日誌記錄到日誌檔案中。NONE 禁用日誌記錄。如果值中存在 NONE,則其優先於任何其他存在的單字。TABLEFILE 可以同時給定,以選擇兩個日誌輸出目的地。

    此變數選擇日誌輸出目的地,但不會啟用日誌輸出。若要啟用日誌輸出,請啟用 general_logslow_query_log 系統變數。對於 FILE 日誌記錄,general_log_fileslow_query_log_file 系統變數決定日誌檔案的位置。如需更多資訊,請參閱 第 7.4.1 節,「選取一般查詢日誌和慢查詢日誌輸出目的地」

  • log_queries_not_using_indexes

    命令列格式 --log-queries-not-using-indexes[={OFF|ON}]
    系統變數 log_queries_not_using_indexes
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果啟用此變數並且啟用了慢查詢日誌,則預期會擷取所有資料列的查詢將被記錄。請參閱 第 7.4.5 節,「慢查詢日誌」。此選項不一定表示未使用索引。例如,使用完整索引掃描的查詢會使用索引,但仍會被記錄,因為索引不會限制資料列的數量。

  • log_raw

    命令列格式 --log-raw[={OFF|ON}]
    系統變數 log_raw
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    log_raw 系統變數最初設定為 --log-raw 選項的值。請參閱該選項的描述以瞭解更多資訊。系統變數也可以在執行時設定,以變更密碼遮罩行為。

  • log_slow_admin_statements

    命令列格式 --log-slow-admin-statements[={OFF|ON}]
    系統變數 log_slow_admin_statements
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    將慢速管理陳述式包含在寫入慢查詢日誌的陳述式中。管理陳述式包括 ALTER TABLEANALYZE TABLECHECK TABLECREATE INDEXDROP INDEXOPTIMIZE TABLEREPAIR TABLE

  • log_slow_extra

    命令列格式 --log-slow-extra[={OFF|ON}]
    系統變數 log_slow_extra
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果啟用了慢查詢日誌,且輸出目的地包含 FILE,則伺服器會將其他欄位寫入日誌檔案行,以提供有關慢速陳述式的資訊。請參閱 第 7.4.5 節,「慢查詢日誌」TABLE 輸出不受影響。

  • log_timestamps

    命令列格式 --log-timestamps=#
    系統變數 log_timestamps
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 UTC
    有效值

    UTC

    SYSTEM

    此變數控制寫入錯誤日誌中的訊息,以及寫入檔案的一般查詢日誌和慢查詢日誌訊息中的時間戳記的時區。它不影響寫入表格(mysql.general_logmysql.slow_log)的一般查詢日誌和慢查詢日誌訊息的時區。從這些表格擷取的資料列可以使用 CONVERT_TZ() 從本機系統時區轉換為任何所需的時區,或者設定工作階段的 time_zone 系統變數。

    允許的 log_timestamps 值為 UTC(預設值)和 SYSTEM(本機系統時區)。

    時間戳記使用 ISO 8601 / RFC 3339 格式寫入:YYYY-MM-DDThh: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=#
    系統變數 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

    命令列格式 --low-priority-updates[={OFF|ON}]
    系統變數 low_priority_updates
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果設定為 1,則所有 INSERTUPDATEDELETELOCK TABLE WRITE 陳述式會等待,直到受影響的資料表上沒有擱置的 SELECTLOCK TABLE READ 為止。可以使用 {INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ... 來降低單一查詢的優先順序,以取得相同的效果。此變數僅影響僅使用資料表層級鎖定的儲存引擎(例如 MyISAMMEMORYMERGE)。請參閱 第 10.11.2 節,「資料表鎖定問題」

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • lower_case_file_system

    系統變數 lower_case_file_system
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值

    此變數描述資料目錄所在檔案系統上檔案名稱的大小寫敏感度。OFF 表示檔案名稱區分大小寫,ON 表示不區分大小寫。此變數為唯讀,因為它反映檔案系統屬性,設定它對檔案系統不會產生任何影響。

  • lower_case_table_names

    命令列格式 --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=值
    系統變數 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 ROLEDROP USER 刪除。

    為了防止工作階段預設成為系統工作階段,具有 SYSTEM_USER 權限的角色不能在 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=#
    系統變數 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,但個別的用戶端程式可能會覆寫這個值。例如,mysqlmysqldump 的預設值分別為 16MB 和 24MB。它們也允許您透過在命令列或選項檔案中設定 max_allowed_packet 來變更用戶端的值。

    此變數的工作階段值是唯讀的。用戶端最多可以接收與工作階段值一樣多的位元組。然而,伺服器傳送給用戶端的位元組數不會超過目前的全域 max_allowed_packet 值。(如果全域值在用戶端連線後變更,則全域值可能小於工作階段值。)

  • max_connect_errors

    命令列格式 --max-connect-errors=#
    系統變數 max_connect_errors
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 100
    最小值 1
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295

    如果主機連續 max_connect_errors 次連線請求中斷而未成功建立連線,伺服器會封鎖該主機的後續連線。如果主機在先前的連線中斷後,在少於 max_connect_errors 次嘗試內成功建立連線,則該主機的錯誤計數會清除為零。若要解除封鎖已封鎖的主機,請清除主機快取;請參閱清除主機快取

  • max_connections

    命令列格式 --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=#
    已棄用
    系統變數 max_delayed_threads
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 20
    最小值 0
    最大值 16384

    此系統變數已棄用(因為不支援 DELAYED 插入),並且在未來的 MySQL 版本中可能會移除。

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • max_digest_length

    命令列格式 --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=#
    系統變數 max_error_count
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1024
    最小值 0
    最大值 65535

    要儲存以供 SHOW ERRORSSHOW WARNINGS 陳述式顯示的錯誤、警告和資訊訊息的最大數量。這與診斷區域中的條件區域數量相同,因此也是 GET DIAGNOSTICS 可以檢查的條件數量。

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • max_execution_time

    命令列格式 --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=#
    系統變數 max_heap_table_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 16777216
    最小值 16384
    最大值(64 位元平台) 18446744073709550592
    最大值(32 位元平台) 4294966272
    單位 位元組
    區塊大小 1024

    此變數設定允許使用者建立的 MEMORY 資料表成長的最大大小。變數的值用於計算 MEMORY 資料表的 MAX_ROWS 值。

    除非使用 CREATE TABLE 等陳述式重新建立資料表,或使用 ALTER TABLETRUNCATE 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

    已棄用
    系統變數 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=#
    系統變數 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=#
    已棄用
    系統變數 max_length_for_sort_data
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 4096
    最小值 4
    最大值 8388608
    單位 位元組

    此變數已棄用,在 MySQL 8.4 中無效。

  • max_points_in_geometry

    命令列格式 --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=#
    系統變數 max_prepared_stmt_count
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 16382
    最小值 0
    最大值 4194304

    此變數限制伺服器中準備好的陳述式總數。它可用於存在潛在阻斷服務攻擊的環境,這些攻擊基於準備大量陳述式而導致伺服器記憶體耗盡。如果該值設定低於目前準備好的陳述式數量,則現有的陳述式不受影響且可以使用,但直到目前的數量低於限制之前,都無法準備新的陳述式。將值設定為 0 會停用準備好的陳述式。

  • max_seeks_for_key

    命令列格式 --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=#
    系統變數 max_sort_length
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1024
    最小值 4
    最大值 8388608
    單位 位元組

    排序使用 PAD SPACE 定序的字串值時要使用的位元組數。伺服器只會使用任何此類值的前 max_sort_length 個位元組,並忽略其餘部分。因此,僅在前 max_sort_length 個位元組之後才不同的此類值會被視為在 GROUP BYORDER BYDISTINCT 操作中相等。(此行為與舊版 MySQL 不同,舊版 MySQL 會將此設定套用至比較中使用的所有值。)

    增加 max_sort_length 的值可能也需要增加 sort_buffer_size 的值。如需詳細資訊,請參閱第 10.2.1.16 節「ORDER BY 最佳化」

  • max_sp_recursion_depth

    命令列格式 --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=#
    系統變數 max_user_connections
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295

    允許任何給定 MySQL 使用者帳戶同時連線的最大數量。值為 0 (預設值) 表示 無限制。

    此變數具有可在伺服器啟動或執行時設定的全域值。它也具有唯讀會話值,指示適用於與目前會話相關聯的帳戶的有效同時連線限制。會話值會以下列方式初始化

    • 如果使用者帳戶具有非零的 MAX_USER_CONNECTIONS 資源限制,則會將會話 max_user_connections 值設定為該限制。

    • 否則,會將會話 max_user_connections 值設定為全域值。

    帳戶資源限制是使用 CREATE USERALTER USER 陳述式指定。請參閱第 8.2.21 節「設定帳戶資源限制」

  • max_write_lock_count

    命令列格式 --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=檔案名稱
    系統變數 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=#
    系統變數 min_examined_row_limit
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295

    查詢檢查的資料列數少於此數時,不會記錄到慢查詢日誌。

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • myisam_data_pointer_size

    命令列格式 --myisam-data-pointer-size=#
    系統變數 myisam_data_pointer_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 6
    最小值 2
    最大值 7
    單位 位元組

    當未指定 MAX_ROWS 選項時,CREATE TABLEMyISAM 資料表使用的預設指標大小(以位元組為單位)。此變數不能小於 2 或大於 7。預設值為 6。請參閱第 B.3.2.10 節,「資料表已滿」

  • myisam_max_sort_file_size

    命令列格式 --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 TABLEALTER TABLELOAD DATA 期間)允許使用的暫存檔的最大大小。如果檔案大小會大於此值,則改為使用索引快取建立索引,速度較慢。該值以位元組為單位。

    如果 MyISAM 索引檔超過此大小且磁碟空間可用,增加該值可能有助於效能。空間必須位於包含原始索引檔所在目錄的檔案系統中。

  • myisam_mmap_size

    命令列格式 --myisam-mmap-size=#
    系統變數 myisam_mmap_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 (64 位元平台) 18446744073709551615
    預設值 (32 位元平台) 4294967295
    最小值 7
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295
    單位 位元組

    用於記憶體對應壓縮 MyISAM 檔案的最大記憶體量。如果使用許多壓縮的 MyISAM 資料表,則可以減少該值以降低記憶體交換問題的可能性。

  • myisam_recover_options

    命令列格式 --myisam-recover-options[=list]
    系統變數 myisam_recover_options
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 OFF
    有效值

    OFF

    DEFAULT

    BACKUP

    FORCE

    QUICK

    設定 MyISAM 儲存引擎復原模式。變數值是 OFFDEFAULTBACKUPFORCEQUICK 值的任意組合。如果指定多個值,請用逗號分隔。在伺服器啟動時指定不帶值的變數,與指定 DEFAULT 相同,而指定明確值 "" 則停用復原 (與 OFF 值相同)。如果啟用復原,每次 mysqld 開啟 MyISAM 資料表時,它會檢查資料表是否被標記為損毀或未正確關閉。(只有在停用外部鎖定的情況下執行時,最後一個選項才有效。)如果是這種情況,mysqld 會對資料表執行檢查。如果資料表已損壞,mysqld 會嘗試修復它。

    以下選項會影響修復的工作方式。

    選項 說明
    OFF 不復原。
    DEFAULT 在不備份、強制或快速檢查的情況下復原。
    BACKUP 如果在復原期間變更了資料檔,請將 tbl_name.MYD 檔案的備份儲存為 tbl_name-datetime.BAK
    FORCE 即使我們會從 .MYD 檔案中遺失多個資料列,也執行復原。
    QUICK 如果沒有任何刪除區塊,則不要檢查資料表中的資料列。

    在伺服器自動修復資料表之前,它會在錯誤日誌中寫入有關修復的註解。如果您希望能夠在不需要使用者介入的情況下從大多數問題中復原,則應使用 BACKUP,FORCE 選項。即使會刪除某些資料列,這也會強制修復資料表,但它會將舊資料檔保留為備份,以便您稍後檢查發生了什麼事。

    請參閱第 18.2.1 節,「MyISAM 啟動選項」

  • myisam_sort_buffer_size

    命令列格式 --myisam-sort-buffer-size=#
    系統變數 myisam_sort_buffer_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 8388608
    最小值 4096
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295
    單位 位元組

    REPAIR TABLE 期間或使用 CREATE INDEXALTER TABLE 建立索引時,用於排序 MyISAM 索引時配置的緩衝區大小。

  • myisam_stats_method

    命令列格式 --myisam-stats-method=名稱
    系統變數 myisam_stats_method
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 nulls_unequal
    有效值

    nulls_unequal

    nulls_equal

    nulls_ignored

    伺服器在收集關於 MyISAM 資料表的索引值分佈統計資料時,如何處理 NULL 值。此變數有三個可能的值:nulls_equalnulls_unequalnulls_ignored。對於 nulls_equal,所有 NULL 索引值都被視為相等,並形成大小等於 NULL 值數量的單個值群組。對於 nulls_unequalNULL 值被視為不相等,每個 NULL 值形成大小為 1 的不同值群組。對於 nulls_ignoredNULL 值會被忽略。

    用於產生資料表統計資料的方法會影響最佳化工具如何選擇用於查詢執行的索引,如第 10.3.8 節,「InnoDB 和 MyISAM 索引統計資料收集」中所述。

  • myisam_use_mmap

    命令列格式 --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

    命令列格式 --named-pipe[={OFF|ON}]
    系統變數 named_pipe
    範圍 全域
    動態
    SET_VAR 提示適用
    平台特定 Windows
    類型 布林值
    預設值 OFF

    (僅限 Windows。)表示伺服器是否支援通過具名管道進行連線。

  • named_pipe_full_access_group

    命令列格式 --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=#
    系統變數 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=#
    系統變數 net_read_timeout
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 30
    最小值 1
    最大值 31536000
    單位

    在中止讀取之前,等待從連線取得更多資料的秒數。當伺服器從用戶端讀取資料時,net_read_timeout 是控制何時中止的逾時值。當伺服器寫入用戶端時,net_write_timeout 是控制何時中止的逾時值。另請參閱 replica_net_timeout

  • net_retry_count

    命令列格式 --net-retry-count=#
    系統變數 net_retry_count
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 10
    最小值 1
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295

    如果通訊埠上的讀取或寫入被中斷,則在放棄之前,重試此次數。此值在 FreeBSD 上應設定得很高,因為內部中斷會傳送至所有執行緒。

  • net_write_timeout

    命令列格式 --net-write-timeout=#
    系統變數 net_write_timeout
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 60
    最小值 1
    最大值 31536000
    單位

    在中止寫入之前,等待將區塊寫入連線的秒數。另請參閱 net_read_timeout

  • ngram_token_size

    命令列格式 --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

    命令列格式 --offline-mode[={OFF|ON}]
    系統變數 offline_mode
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    在離線模式中,MySQL 執行個體會中斷與用戶端的連線,除非它們具有相關的權限,並且不允許它們啟動新的連線。被拒絕存取的用戶端會收到 ER_SERVER_OFFLINE_MODE 錯誤。

    若要將伺服器置於離線模式,請將 offline_mode 系統變數的值從 OFF 變更為 ON。若要恢復正常操作,請將 offline_modeON 變更為 OFF。若要控制離線模式,管理員帳戶必須具有 SYSTEM_VARIABLES_ADMIN 權限和 CONNECTION_ADMIN 權限(或已棄用的 SUPER 權限,它涵蓋這兩種權限)。需要 CONNECTION_ADMIN,以防止意外鎖定。

    離線模式具有以下特性

    • 已連線且不具有 CONNECTION_ADMIN 權限(或已棄用的 SUPER 權限)的用戶端,會在下一個請求中斷連線,並顯示適當的錯誤。中斷連線包括終止正在執行的陳述式並釋放鎖定。這類用戶端也無法啟動新的連線,並會收到適當的錯誤。

    • 已連線且具有 CONNECTION_ADMINSUPER 權限的用戶端,不會中斷連線,並且可以啟動新的連線來管理伺服器。

    • 如果將伺服器置於離線模式的使用者不具有 SYSTEM_USER 權限,則已連線且具有 SYSTEM_USER 權限的用戶端也不會中斷連線。但是,這些用戶無法在伺服器處於離線模式時啟動與伺服器的新連線,除非它們也具有 CONNECTION_ADMINSUPER 權限。只有它們現有的連線無法終止,因為需要 SYSTEM_USER 權限來終止以 SYSTEM_USER 權限執行的工作階段或陳述式。

    • 允許複寫執行緒繼續將資料套用至伺服器。

  • old_alter_table

    命令列格式 --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=ONALTER TABLE ... DROP PARTITION 會重建已分割的表格,並嘗試將已卸除分割區的資料移至另一個具有相容 PARTITION ... VALUES 定義的分割區。無法移至另一個分割區的資料會被刪除。在先前的版本中,使用 old_alter_table=ONALTER TABLE ... DROP PARTITION 會刪除儲存在分割區中的資料並卸除分割區。

  • open_files_limit

    命令列格式 --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_connectionstable_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=#
    系統變數 optimizer_prune_level
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1
    最小值 0
    最大值 1

    控制查詢最佳化期間套用的啟發式方法,以從最佳化工具搜尋空間中修剪掉較不具前景的部分計畫。值為 0 會停用啟發式方法,以便最佳化工具執行詳盡的搜尋。值為 1 會導致最佳化工具根據中間計畫擷取的列數來修剪計畫。

  • optimizer_search_depth

    命令列格式 --optimizer-search-depth=#
    系統變數 optimizer_search_depth
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 62
    最小值 0
    最大值 62

    查詢最佳化工具執行的最大搜尋深度。大於查詢中關聯數目的值會產生較佳的查詢計畫,但產生查詢的執行計畫需要更長的時間。小於查詢中關聯數目的值會更快地傳回執行計畫,但產生的計畫可能遠非最佳。如果設定為 0,系統會自動選取合理的值。

  • optimizer_switch

    命令列格式 --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 系統變數可讓您控制最佳化工具的行為。此變數的值是一組旗標,每個旗標的值為 onoff,表示是否啟用或停用對應的最佳化工具行為。此變數具有全域和工作階段值,並且可以在執行時變更。全域預設值可以在伺服器啟動時設定。

    若要查看目前最佳化工具旗標的設定,請選取變數值

    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=值
    系統變數 optimizer_trace
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串

    此變數控制最佳化工具追蹤。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具

  • optimizer_trace_features

    命令列格式 --optimizer-trace-features=值
    系統變數 optimizer_trace_features
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串

    此變數啟用或停用選定的最佳化工具追蹤功能。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具

  • optimizer_trace_limit

    命令列格式 --optimizer-trace-limit=#
    系統變數 optimizer_trace_limit
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1
    最小值 0
    最大值 2147483647

    要顯示的最佳化工具追蹤的最大數量。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具

  • optimizer_trace_max_mem_size

    命令列格式 --optimizer-trace-max-mem-size=#
    系統變數 optimizer_trace_max_mem_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1048576
    最小值 0
    最大值 4294967295
    單位 位元組

    儲存的最佳化工具追蹤的最大累計大小。有關詳細資訊,請參閱MySQL 內部:追蹤最佳化工具

  • optimizer_trace_offset

    命令列格式 --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=#
    系統變數 parser_max_mem_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 (64 位元平台) 18446744073709551615
    預設值 (32 位元平台) 4294967295
    最小值 10000000
    最大值(64 位元平台) 18446744073709551615
    最大值(32 位元平台) 4294967295
    單位 位元組

    剖析器可用的最大記憶體量。預設值不會限制可用的記憶體。可以減少該值以防止剖析長或複雜的 SQL 語句所導致的記憶體不足情況。

  • partial_revokes

    命令列格式 --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 會導致 MySQL 將結構描述名稱中未跳脫的 _% SQL 萬用字元解譯為文字字元,就像它們已跳脫為 \_\% 一樣。因為這會變更 MySQL 解譯權限的方式,因此建議在可能啟用 partial_revokes 的安裝中,避免在權限指派中使用未跳脫的萬用字元。

    此外,不建議在授權中使用 _% 作為萬用字元,您應該預期在未來版本的 MySQL 中會移除對它們的支援。

    有關更多資訊,包括移除部分撤銷的說明,請參閱第 8.2.12 節,「使用部分撤銷限制權限」

  • password_history

    命令列格式 --password-history=#
    系統變數 password_history
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295

    此變數根據要求的最低密碼變更次數,定義控制重複使用先前密碼的全域原則。對於先前使用的帳戶密碼,此變數表示在密碼可以重複使用之前必須發生的後續帳戶密碼變更次數。如果值為 0(預設值),則不會根據密碼變更次數進行重複使用限制。

    對此變數的變更會立即套用至所有使用 PASSWORD HISTORY DEFAULT 選項定義的帳戶。

    全域變更次數密碼重複使用原則可以針對個別帳戶使用 CREATE USERALTER USER 陳述式的 PASSWORD HISTORY 選項來覆寫。請參閱第 8.2.15 節,「密碼管理」

  • password_require_current

    命令列格式 --password-require-current[={OFF|ON}]
    系統變數 password_require_current
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    此變數定義全域原則,用於控制嘗試變更帳戶密碼時是否必須指定要取代的目前密碼。

    對此變數的變更會立即套用至所有使用 PASSWORD REQUIRE CURRENT DEFAULT 選項定義的帳戶。

    全域需要驗證原則可以針對個別帳戶使用 CREATE USERALTER USER 陳述式的 PASSWORD REQUIRE 選項來覆寫。請參閱第 8.2.15 節,「密碼管理」

  • password_reuse_interval

    命令列格式 --password-reuse-interval=#
    系統變數 password_reuse_interval
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 4294967295
    單位

    此變數根據經過的時間定義控制重複使用先前密碼的全域原則。對於先前使用的帳戶密碼,此變數表示在密碼可以重複使用之前必須經過的天數。如果值為 0(預設值),則不會根據經過的時間進行重複使用限制。

    對此變數的變更會立即套用至所有使用 PASSWORD REUSE INTERVAL DEFAULT 選項定義的帳戶。

    全域經過時間的密碼重複使用原則可以針對個別帳戶使用 CREATE USERALTER USER 陳述式的 PASSWORD REUSE INTERVAL 選項來覆寫。請參閱第 8.2.15 節,「密碼管理」

  • persisted_globals_load

    命令列格式 --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 PERSISTSET PERSIST_ONLYRESET PERSIST 陳述式。請參閱第 7.1.9.3 節,「保存的系統變數」

  • persist_only_admin_x509_subject

    命令列格式 --persist-only-admin-x509-subject=字串
    系統變數 persist_only_admin_x509_subject
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 空字串

    SET PERSISTSET 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 設定也表示如果無法解密加密的系統變數值,則伺服器不會啟動。

    如需詳細資訊,請參閱持久化敏感系統變數

  • pid_file

    命令列格式 --pid-file=檔案名稱
    系統變數 pid_file
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱

    伺服器寫入其程序 ID 的檔案路徑名稱。除非提供絕對路徑名稱以指定不同的目錄,否則伺服器會在資料目錄中建立檔案。如果您指定此變數,則必須指定一個值。如果您未指定此變數,MySQL 會使用預設值 host_name.pid,其中 host_name 是主機的名稱。

    其他程式(例如 mysqld_safe)會使用程序 ID 檔案來判斷伺服器的程序 ID。在 Windows 上,此變數也會影響預設的錯誤日誌檔案名稱。請參閱 第 7.4.2 節,「錯誤日誌」

  • plugin_dir

    命令列格式 --plugin-dir=目錄名稱
    系統變數 plugin_dir
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱
    預設值 BASEDIR/lib/plugin

    外掛程式目錄的路徑名稱。

    如果伺服器可以寫入外掛程式目錄,則使用者可能會使用 SELECT ... INTO DUMPFILE 將可執行程式碼寫入目錄中的檔案。可以藉由將 plugin_dir 設定為對伺服器唯讀,或將 secure_file_priv 設定為可以安全地進行 SELECT 寫入的目錄來防止這種情況發生。

  • port

    命令列格式 --port=埠號
    系統變數 port
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 3306
    最小值 0
    最大值 65535

    伺服器接聽 TCP/IP 連線的埠號。可以使用 --port 選項設定此變數。

  • preload_buffer_size

    命令列格式 --preload-buffer-size=#
    系統變數 preload_buffer_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 32768
    最小值 1024
    最大值 1073741824
    單位 位元組

    預先載入索引時所配置的緩衝區大小。

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • print_identified_with_as_hex

    命令列格式 --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 將此類雜湊值顯示為十六進位字串,而不是顯示為一般的字串文字。即使啟用此變數,不包含不可列印字元的雜湊值仍然會顯示為一般的字串文字。

  • profiling

    如果設定為 0 或 OFF(預設值),則會停用陳述式分析。如果設定為 1 或 ON,則會啟用陳述式分析,並且 SHOW PROFILESHOW PROFILES 陳述式會提供對分析資訊的存取權。請參閱 第 15.7.7.32 節,「SHOW PROFILES 陳述式」

    此變數已過時;預計會在未來的 MySQL 版本中移除。

  • profiling_history_size

    如果啟用 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

    系統變數 protocol_version
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 10
    最小值 0
    最大值 4294967295

    MySQL 伺服器使用的用戶端/伺服器協定版本。

  • proxy_user

    系統變數 proxy_user
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 字串

    如果目前的用戶端是另一個使用者的 Proxy,則此變數是 Proxy 使用者帳戶名稱。否則,此變數為 NULL。請參閱 第 8.2.19 節,「Proxy 使用者」

  • pseudo_replica_mode

    系統變數 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_timestamporiginal_server_version 的交易會假設源自另一個未知的伺服器,因此會將值 0(表示未知)指派給時間戳記和系統變數。

    • 如果為 false,則未明確設定 original_commit_timestamporiginal_server_version 的交易會假設源自目前的伺服器,因此會將目前的時間戳記和目前伺服器的版本指派給時間戳記和系統變數。

    pseudo_replica_mode 對於處理設定一個或多個不支援(已移除或未知)SQL 模式的陳述式具有以下影響

    • 如果為 true,則伺服器會忽略不支援的模式並引發警告。

    • 如果為 false,則伺服器會拒絕該陳述式,並顯示 ER_UNSUPPORTED_SQL_MODE

  • pseudo_slave_mode

    已棄用
    系統變數 pseudo_slave_mode
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 布林值

    pseudo_replica_mode 的已棄用別名。

  • pseudo_thread_id

    系統變數 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=#
    系統變數 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=#
    已棄用
    系統變數 query_prealloc_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 8192
    最小值 8192
    最大值(64 位元平台) 18446744073709550592
    最大值(32 位元平台) 4294966272
    單位 位元組
    區塊大小 1024

    query_prealloc_size 已棄用,設定它沒有任何效果;您應該預期它會在 MySQL 的未來版本中移除。

  • rand_seed1

    系統變數 rand_seed1
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 不適用
    最小值 0
    最大值 4294967295

    rand_seed1rand_seed2 變數僅作為工作階段變數存在,且可以設定但不能讀取。這些變數(但不是它們的值)會顯示在 SHOW VARIABLES 的輸出中。

    這些變數的目的是支援複製 RAND() 函數。對於呼叫 RAND() 的陳述式,來源會將兩個值傳遞給複本,這些值會用於設定亂數產生器的種子。複本會使用這些值來設定工作階段變數 rand_seed1rand_seed2,以便複本上的 RAND() 產生與來源上相同的值。

  • rand_seed2

    請參閱 rand_seed1 的說明。

  • range_alloc_block_size

    命令列格式 --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=#
    系統變數 range_optimizer_max_mem_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 8388608
    最小值 0
    最大值 18446744073709551615
    單位 位元組

    範圍最佳化工具的記憶體耗用限制。值 0 表示無限制。如果最佳化工具考量的執行計畫使用範圍存取方法,但最佳化工具估計此方法所需的記憶體量將超過限制,則它會放棄該計畫並考量其他計畫。如需詳細資訊,請參閱限制範圍最佳化的記憶體使用量

  • rbr_exec_mode

    系統變數 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=#
    系統變數 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 DUMPFILESELECT INTO OUTFILE 陳述式的 I/O 快取緩衝區。(在所有其他情況下,read_buffer_size 用於 I/O 快取緩衝區大小。)

    如需不同操作期間記憶體使用量的詳細資訊,請參閱第 10.12.3.1 節,「MySQL 如何使用記憶體」

  • read_only

    命令列格式 --read-only[={OFF|ON}]
    系統變數 read_only
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果啟用了 read_only 系統變數,伺服器將不允許任何用戶端更新,除非使用者擁有 CONNECTION_ADMIN 權限 (或是已棄用的 SUPER 權限)。此變數預設為停用。

    伺服器也支援 super_read_only 系統變數 (預設為停用),此變數有以下影響

    當啟用 read_only 且啟用 super_read_only 時,伺服器仍然允許以下操作

    • 如果伺服器是副本,則允許由複寫執行緒執行的更新。在複寫設定中,啟用副本伺服器上的 read_only 會很有用,以確保副本僅接受來自來源伺服器的更新,而不是來自用戶端的更新。

    • 寫入系統資料表 mysql.gtid_executed,該資料表儲存目前二進位日誌檔案中不存在的已執行交易的 GTID。

    • 使用 ANALYZE TABLEOPTIMIZE TABLE 陳述式。唯讀模式的目的是防止變更資料表結構或內容。分析和最佳化不屬於此類變更。這表示,例如,可以使用 mysqlcheck --all-databases --analyze 在唯讀副本上執行一致性檢查。

    • 使用 FLUSH STATUS 陳述式,這些陳述式始終會寫入二進位日誌。

    • TEMPORARY 資料表的操作。

    • 插入日誌資料表 (mysql.general_logmysql.slow_log);請參閱 第 7.4.1 節,「選擇一般查詢日誌和慢速查詢日誌輸出目的地」

    • 更新效能綱要資料表,例如 UPDATETRUNCATE 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=#
    系統變數 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=#
    系統變數 regexp_stack_limit
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 8000000
    最小值 0
    最大值 2147483647
    單位 位元組

    用於執行由 REGEXP_LIKE() 和類似函數執行之正規表示式比對操作的內部堆疊可用的最大記憶體 (以位元組為單位) (請參閱 第 14.8.2 節,「正規表示式」)。

  • regexp_time_limit

    命令列格式 --regexp-time-limit=#
    系統變數 regexp_time_limit
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 32
    最小值 0
    最大值 2147483647

    REGEXP_LIKE() 和類似函數執行的正規表示式比對操作的時間限制 (請參閱 第 14.8.2 節,「正規表示式」)。此限制表示為比對引擎執行的最大允許步驟數,因此僅間接影響執行時間。通常,它大約在毫秒級別。

  • require_row_format

    系統變數 require_row_format
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    此變數供複寫和 mysqlbinlog 的內部伺服器使用。它將工作階段中執行的 DML 事件限制為僅以列為基礎的二進位記錄格式編碼的事件,而且無法建立暫存資料表。不遵守限制的查詢會失敗。

    將此系統變數的工作階段值設定為 ON 不需要任何權限。將此系統變數的工作階段值設定為 OFF 是一種受限制的操作,且工作階段使用者必須具有設定受限制工作階段變數的足夠權限。請參閱 第 7.1.9.1 節,「系統變數權限」

  • require_secure_transport

    命令列格式 --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 TABLEALTER TABLE 陳述式中使用非唯一或部分金鑰作為外來金鑰已棄用,您應該預期在未來的 MySQL 版本中將移除對它的支援。當 restrict_fk_on_non_standard_keyON 時,嘗試執行此動作會因 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

    系統變數 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=#
    系統變數 schema_definition_cache
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 256
    最小值 256
    最大值 524288

    定義可以保留在字典物件快取中的架構定義物件(無論已使用或未使用)的數量限制。

    只有當正在使用的數量少於 schema_definition_cache 定義的容量時,未使用的架構定義物件才會保留在字典物件快取中。

    設定為 0 表示架構定義物件只會在它們被使用時保留在字典物件快取中。

    如需更多資訊,請參閱第 16.4 節「字典物件快取」

  • secure_file_priv

    命令列格式 --secure-file-priv=dir_name
    系統變數 secure_file_priv
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 平台特定
    有效值

    空字串

    dirname

    NULL

    此變數用於限制資料匯入和匯出操作的影響,例如由 LOAD DATASELECT ... 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-filesCMAKE_INSTALL_PREFIX 值下

    伺服器會在啟動時檢查 secure_file_priv 的值,如果值不安全,則會將警告寫入錯誤日誌。如果值為空、該值是資料目錄或其子目錄,或所有使用者都可以存取的目錄,則會認為非 NULL 值不安全。如果 secure_file_priv 設定為不存在的路徑,則伺服器會將錯誤訊息寫入錯誤日誌並退出。

  • select_into_buffer_size

    命令列格式 --select-into-buffer-size=#
    系統變數 select_into_buffer_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 131072
    最小值 8192
    最大值 2147479552
    單位 位元組
    區塊大小 4096

    當使用 SELECT INTO OUTFILESELECT INTO DUMPFILE 將資料傾印到一個或多個檔案以建立備份、資料遷移或其他目的時,寫入通常可以緩衝,然後觸發大量寫入 I/O 活動到磁碟或其他儲存裝置,並使其他對延遲更敏感的查詢停滯。您可以使用此變數來控制用於將資料寫入儲存裝置的緩衝區大小,以決定何時應進行緩衝區同步,從而防止發生剛才描述的寫入停頓。

    select_into_buffer_size 會覆寫為 read_buffer_size 設定的任何值。(select_into_buffer_sizeread_buffer_size 具有相同的預設值、最大值和最小值。)您也可以使用 select_into_disk_sync_delay 來設定之後要觀察的逾時,每次發生同步時。

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • select_into_disk_sync

    命令列格式 --select-into-disk-sync={ON|OFF}
    系統變數 select_into_disk_sync
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF
    有效值

    OFF

    ON

    設定為 ON 時,使用 select_into_buffer_size 啟用長時間執行的 SELECT INTO OUTFILESELECT INTO DUMPFILE 陳述式對輸出檔案的寫入進行緩衝區同步。

  • select_into_disk_sync_delay

    命令列格式 --select-into-disk-sync-delay=#
    系統變數 select_into_disk_sync_delay
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 31536000
    單位 毫秒

    當透過 select_into_disk_sync 啟用長時間執行的 SELECT INTO OUTFILESELECT INTO DUMPFILE 陳述式對輸出檔案的寫入進行緩衝區同步時,此變數會設定同步後的選用延遲(以毫秒為單位)。0(預設值)表示沒有延遲。

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • session_track_gtids

    命令列格式 --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

    命令列格式 --session-track-schema[={OFF|ON}]
    系統變數 session_track_schema
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    控制伺服器是否追蹤目前會話中設定預設架構(資料庫)的時間,並通知客戶端以使架構名稱可用。

    如果啟用了架構名稱追蹤器,則每次設定預設架構時都會發生名稱通知,即使新的架構名稱與舊的架構名稱相同也是如此。

    有關會話狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端會話狀態」

  • session_track_state_change

    命令列格式 --session-track-state-change[={OFF|ON}]
    系統變數 session_track_state_change
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    控制伺服器是否追蹤目前會話的狀態變更,並在發生狀態變更時通知客戶端。可以針對客戶端會話狀態的這些屬性報告變更:

    • 預設架構(資料庫)。

    • 系統變數的會話特定值。

    • 使用者定義的變數。

    • 暫存表。

    • 預先處理的陳述式。

    如果啟用了會話狀態追蹤器,則每次發生涉及追蹤的會話屬性的變更時都會發生通知,即使新的屬性值與舊的屬性值相同也是如此。例如,將使用者定義的變數設定為其目前值會導致通知。

    session_track_state_change 變數僅控制何時發生變更的通知,而不是變更的內容。例如,當設定預設架構或指定追蹤的會話系統變數時,會發生狀態變更通知,但通知不包含架構名稱或變數值。若要接收架構名稱或會話系統變數值的通知,請分別使用 session_track_schemasession_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_zoneautocommitcharacter_set_clientcharacter_set_resultscharacter_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_isolationtransaction_read_only 系統變數,以正確判斷工作階段預設值。(若要追蹤這些變數,請將它們列在 session_track_system_variables 系統變數的值中。)

    有關會話狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端會話狀態」

  • set_operations_buffer_size

    命令列格式 --set-operations-buffer-size=#
    系統變數 set_operations_buffer_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 256K
    最小值 16K
    最大值 1 GB

    設定 INTERSECTEXCEPT 運算的緩衝區大小,當 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_keyscaching_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

    命令列格式 --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

    命令列格式 --shared-memory[={OFF|ON}]
    系統變數 shared_memory
    範圍 全域
    動態
    SET_VAR 提示適用
    平台特定 Windows
    類型 布林值
    預設值 OFF

    (僅限 Windows。)伺服器是否允許共用記憶體連線。

  • shared_memory_base_name

    命令列格式 --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

    命令列格式 --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

    命令列格式 --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

    命令列格式 --skip-name-resolve[={OFF|ON}]
    系統變數 skip_name_resolve
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    檢查用戶端連線時是否解析主機名稱。如果此變數為 OFFmysqld 會在檢查用戶端連線時解析主機名稱。如果此變數為 ONmysqld 僅使用 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=::1root 身分連線,請建立以下帳戶

    CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
    CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
  • skip_networking

    命令列格式 --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
    系統變數 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_SCHEMASCHEMATA 資料表來查看所有資料庫名稱,但那些在資料庫層級受到部分撤銷限制的資料庫除外。

  • slow_launch_time

    命令列格式 --slow-launch-time=#
    系統變數 slow_launch_time
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 2
    最小值 0
    最大值 31536000
    單位

    如果建立執行緒所花費的時間超過此秒數,則伺服器會增加 Slow_launch_threads 狀態變數。

  • slow_query_log

    命令列格式 --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

    命令列格式 --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

    命令列格式 --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=#
    系統變數 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 BYGROUP 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

    系統變數 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

    系統變數 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

    系統變數 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

    系統變數 sql_log_off
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF
    有效值

    OFF(啟用記錄)

    ON(停用記錄)

    此變數控制是否針對目前的工作階段停用一般查詢記錄(假設已啟用一般查詢記錄)。預設值為 OFF(即啟用記錄)。若要停用或啟用目前工作階段的一般查詢記錄,請將工作階段 sql_log_off 變數設定為 ONOFF

    設定此系統變數的會期值是受限制的操作。會期使用者必須擁有足以設定受限制會期變數的權限。請參閱第 7.1.9.1 節「系統變數權限」

  • sql_mode

    命令列格式 --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 模式與預設值或您預期的值不同,請檢查伺服器在啟動時讀取的選項檔案中是否有設定。

  • sql_notes

    系統變數 sql_notes
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    如果啟用(預設值),Note 級別的診斷會遞增 warning_count,且伺服器會記錄它們。如果停用,Note 診斷不會遞增 warning_count,且伺服器不會記錄它們。mysqldump 包含停用此變數的輸出,如此重新載入傾印檔案時,不會產生對重新載入操作完整性沒有影響的事件警告。

  • sql_quote_show_create

    系統變數 sql_quote_show_create
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    如果啟用(預設值),伺服器會為 SHOW CREATE TABLESHOW CREATE DATABASE 陳述式引用識別碼。如果停用,則會停用引用。依預設會啟用此選項,以便複製適用於需要引用的識別碼。請參閱第 15.7.7.11 節,「SHOW CREATE TABLE 陳述式」第 15.7.7.7 節,「SHOW CREATE DATABASE 陳述式」

  • sql_require_primary_key

    命令列格式 --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 系統變數的工作階段值。使用 ONOFF 設定時,帳戶不需要這些權限。如需詳細資訊,請參閱第 19.3.3 節,「複製權限檢查」

  • sql_safe_updates

    系統變數 sql_safe_updates
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果啟用此變數,未使用 WHERE 子句中的索引鍵或 LIMIT 子句的 UPDATEDELETE 陳述式會產生錯誤。這使得可以攔截未正確使用索引鍵,且可能變更或刪除大量列的 UPDATEDELETE 陳述式。預設值為 OFF

    對於 mysql 用戶端,可以使用 --safe-updates 選項啟用 sql_safe_updates。如需更多資訊,請參閱使用安全更新模式 (--safe-updates)

  • sql_select_limit

    系統變數 sql_select_limit
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 18446744073709551615
    最小值 0
    最大值 18446744073709551615

    SELECT 陳述式傳回的最大列數。如需更多資訊,請參閱使用安全更新模式 (--safe-updates)

    新連線的預設值是伺服器允許每個資料表的最大列數。典型的預設值為 (232)−1 或 (264)−1。如果您已變更限制,則可以透過指派 DEFAULT 值來還原預設值。

    如果 SELECTLIMIT 子句,則 LIMIT 的優先順序高於 sql_select_limit 的值。

  • sql_warnings

    系統變數 sql_warnings
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果發生警告,此變數會控制單列 INSERT 陳述式是否產生資訊字串。預設值為 OFF。將值設定為 ON 以產生資訊字串。

  • ssl_ca

    命令列格式 --ssl-ca=file_name
    系統變數 ssl_ca
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    PEM 格式的憑證授權單位 (CA) 憑證檔案的路徑名稱。檔案包含受信任的 SSL 憑證授權單位清單。

    此變數可以在執行時間修改,以影響伺服器在執行 ALTER INSTANCE RELOAD TLS 之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視

  • ssl_capath

    命令列格式 --ssl-capath=dir_name
    系統變數 ssl_capath
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱
    預設值 NULL

    包含 PEM 格式的受信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄的路徑名稱。

    此變數可以在執行時間修改,以影響伺服器在執行 ALTER INSTANCE RELOAD TLS 之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視

  • ssl_cert

    命令列格式 --ssl-cert=file_name
    系統變數 ssl_cert
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    PEM 格式的伺服器 SSL 公開金鑰憑證檔案的路徑名稱。

    如果伺服器啟動時,ssl_cert 設定為使用任何受限制的加密演算法或加密演算法類別的憑證,伺服器啟動時將停用加密連線的支援。關於加密演算法限制的資訊,請參閱連線加密演算法設定

    此變數可以在執行時間修改,以影響伺服器在執行 ALTER INSTANCE RELOAD TLS 之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視

  • ssl_cipher

    命令列格式 --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 內容。請參閱加密連線的伺服器端執行階段組態和監視

  • ssl_crl

    命令列格式 --ssl-crl=檔案名稱
    系統變數 ssl_crl
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    包含 PEM 格式憑證撤銷清單的檔案路徑名稱。

    此變數可以在執行時間修改,以影響伺服器在執行 ALTER INSTANCE RELOAD TLS 之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視

  • ssl_crlpath

    命令列格式 --ssl-crlpath=目錄名稱
    系統變數 ssl_crlpath
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱
    預設值 NULL

    包含 PEM 格式憑證撤銷清單檔案的目錄路徑。

    此變數可以在執行時間修改,以影響伺服器在執行 ALTER INSTANCE RELOAD TLS 之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視

  • ssl_fips_mode

    命令列格式 --ssl-fips-mode={OFF|ON|STRICT}
    已棄用
    系統變數 ssl_fips_mode
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 OFF
    有效值

    OFF (或 0)

    ON (或 1)

    STRICT (或 2)

    控制是否在伺服器端啟用 FIPS 模式。ssl_fips_mode 系統變數與其他 ssl_xxx 系統變數不同之處在於,它不是用於控制伺服器是否允許加密連線,而是影響允許哪些加密操作。請參閱章節 8.8,「FIPS 支援」

    允許以下 ssl_fips_mode

    • OFF (或 0):停用 FIPS 模式。

    • ON (或 1):啟用 FIPS 模式。

    • STRICT (或 2):啟用「嚴格」FIPS 模式。

    注意

    如果 OpenSSL FIPS 物件模組不可用,則 ssl_fips_mode 唯一允許的值為 OFF。在這種情況下,在啟動時將 ssl_fips_mode 設定為 ONSTRICT 會導致伺服器產生錯誤訊息並退出。

    此選項已棄用且設為唯讀。預期會在未來版本的 MySQL 中移除。

  • ssl_key

    命令列格式 --ssl-key=檔案名稱
    系統變數 ssl_key
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 檔案名稱
    預設值 NULL

    伺服器 SSL 私鑰檔案的 PEM 格式路徑名稱。為了獲得更好的安全性,請使用 RSA 金鑰大小至少為 2048 位元的憑證。

    如果金鑰檔案受密碼保護,伺服器會提示使用者輸入密碼。密碼必須以互動方式提供;它不能儲存在檔案中。如果密碼不正確,程式會繼續執行,就像無法讀取金鑰一樣。

    此變數可以在執行時間修改,以影響伺服器在執行 ALTER INSTANCE RELOAD TLS 之後建立的新連線或在還原變數值後重新啟動時使用的 TLS 內容。請參閱加密連線的伺服器端執行階段組態和監視

  • ssl_session_cache_mode

    命令列格式 --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
    系統變數 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

    系統變數 statement_id
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 整數

    目前工作階段中執行的每個陳述式都會被指派一個序號。這可以與 session_track_system_variables 系統變數一起使用,以在效能架構表格(例如 events_statements_history 表格)中識別此陳述式。

  • stored_program_cache

    命令列格式 --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

    命令列格式 --super-read-only[={OFF|ON}]
    系統變數 super_read_only
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 OFF

    如果啟用 read_only 系統變數,伺服器只允許具有 CONNECTION_ADMIN 權限(或已棄用的 SUPER 權限)的使用者進行用戶端更新。如果也啟用 super_read_only 系統變數,則伺服器甚至會禁止具有 CONNECTION_ADMINSUPER 權限的使用者進行用戶端更新。請參閱 read_only 系統變數的描述,了解唯讀模式的描述,以及 read_onlysuper_read_only 如何互動的資訊。

    啟用 super_read_only 時,會阻止用戶端更新,這包括那些表面上看起來不像是更新的操作,例如 CREATE FUNCTION (安裝可載入的函數)、INSTALL PLUGININSTALL COMPONENT。這些操作被禁止,因為它們會變更 mysql 系統結構描述中的資料表。

    同樣地,如果啟用了事件排程器,啟用 super_read_only 系統變數會阻止它更新 events 資料字典資料表中的事件上次執行時間戳記。這會導致事件排程器在下次嘗試執行排定的事件時停止,並在伺服器錯誤日誌中寫入訊息。(在這種情況下,event_scheduler 系統變數不會從 ON 變更為 OFF。這意味著此變數會拒絕 DBA 希望事件排程器啟用或停用的意圖,而它的實際啟動或停止狀態可能不同。) 如果在啟用 super_read_only 之後隨後停用,伺服器會根據需要自動重新啟動事件排程器。

    在複寫來源伺服器上變更 super_read_only 不會複寫到複本伺服器。此值可以在複本上獨立於來源上的設定來設定。

  • syseventlog.facility

    命令列格式 --syseventlog.facility=值
    系統變數 syseventlog.facility
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 daemon

    寫入到 syslog 的錯誤日誌輸出的設備 (發送訊息的程式類型)。除非安裝了 log_sink_syseventlog 錯誤日誌元件,否則此變數不可用。請參閱第 7.4.2.8 節「錯誤記錄到系統日誌」

    允許的值可能因作業系統而異;請查閱您的系統 syslog 文件。

    此變數在 Windows 上不存在。

  • syseventlog.include_pid

    命令列格式 --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=標籤
    系統變數 syseventlog.tag
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 空字串

    要新增到寫入到 syslog 或 Windows 事件日誌的錯誤日誌輸出中伺服器識別碼的標籤。除非安裝了 log_sink_syseventlog 錯誤日誌元件,否則此變數不可用。請參閱第 7.4.2.8 節「錯誤記錄到系統日誌」

    預設情況下,不設定標籤,因此伺服器識別碼在 Windows 上簡稱為 MySQL,在其他平台上為 mysqld。如果指定了 標籤 的標籤值,則會附加到伺服器識別碼,並帶有前導連字號,從而產生 mysqld-標籤syslog 識別碼 (或 Windows 上的 MySQL-標籤)。

    在 Windows 上,若要使用尚未存在的標籤,必須從具有管理員權限的帳戶執行伺服器,以便允許建立標籤的登錄項目。如果標籤已存在,則不需要提升的權限。

  • system_time_zone

    系統變數 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=#
    系統變數 table_definition_cache
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 -1 (表示自動調整大小;請勿指派此常值)
    最小值 400
    最大值 524288

    可以儲存在資料表定義快取中的資料表定義數量。如果使用大量資料表,您可以建立較大的資料表定義快取,以加速開啟資料表。與一般資料表快取不同,資料表定義快取佔用的空間較少,且不使用檔案描述元。最小值為 400。預設值根據以下公式計算,上限為 2000

    MIN(400 + table_open_cache / 2, 2000)

    對於 InnoDBtable_definition_cache 設定充當字典物件快取中的資料表實例數量和一次可以開啟的每個資料表檔案資料表空間數量的軟限制。

    如果字典物件快取中的資料表實例數量超過 table_definition_cache 限制,則 LRU 機制會開始將資料表實例標記為要移除,並最終將其從字典物件快取中移除。具有快取中繼資料的開啟資料表數量可能會高於 table_definition_cache 限制,因為具有外部索引鍵關聯性的資料表實例不會放置在 LRU 清單中。

    一次可以開啟的每個資料表檔案資料表空間數量受 table_definition_cacheinnodb_open_files 設定的限制。如果同時設定了兩個變數,則使用較高的設定。如果未設定任一變數,則使用具有較高預設值的 table_definition_cache 設定。如果開啟的資料表空間數量超過 table_definition_cacheinnodb_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 PERSISTSET PERSIST_ONLY 語法。請參閱第 7.1.9.3 節「持續性系統變數」

    如需更多資訊,請參閱 定義結構描述和一般表格空間的預設加密

  • table_open_cache

    命令列格式 --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=#
    系統變數 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=#
    系統變數 tablespace_definition_cache
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 256
    最小值 256
    最大值 524288

    定義可以保留在字典物件快取中的資料表空間定義物件(無論已使用或未使用)的數量上限。

    只有在使用的資料表空間定義物件數量小於 tablespace_definition_cache 所定義的容量時,未使用的資料表空間定義物件才會保留在字典物件快取中。

    設定為 0 表示資料表空間定義物件只在使用時才會保留在字典物件快取中。

    如需更多資訊,請參閱第 16.4 節「字典物件快取」

  • temptable_max_mmap

    命令列格式 --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=#
    系統變數 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

    命令列格式 --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=#
    系統變數 thread_cache_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 -1 (表示自動調整大小;請勿指派此常值)
    最小值 0
    最大值 16384

    伺服器應快取多少執行緒以供重複使用。當用戶端中斷連線時,如果快取中的執行緒數量少於 thread_cache_size,則會將用戶端的執行緒放入快取中。對執行緒的要求會盡可能重複使用快取中的執行緒來滿足,只有在快取為空時才會建立新的執行緒。如果您有很多新連線,可以增加此變數以提升效能。通常,如果您的執行緒實作良好,這不會顯著提升效能。但是,如果您的伺服器每秒看到數百個連線,您通常應將 thread_cache_size 設定得足夠高,以便大多數新連線都使用快取的執行緒。藉由檢查 ConnectionsThreads_created 狀態變數之間的差異,您可以瞭解執行緒快取的效率如何。如需詳細資訊,請參閱第 7.1.10 節,「伺服器狀態變數」

    預設值基於以下公式,上限為 100

    8 + (max_connections / 100)
  • thread_handling

    命令列格式 --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=#
    系統變數 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=#
    系統變數 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=#
    系統變數 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=#
    系統變數 thread_pool_size
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 16
    最小值 1
    最大值 512

    執行緒池中的執行緒群組數。這是控制執行緒池效能的最重要參數。它會影響可以同時執行的語句數量。如果指定了超出允許值範圍的值,則執行緒池外掛程式不會載入,並且伺服器會將訊息寫入錯誤記錄檔。

    此變數僅在啟用執行緒集區外掛程式時才可用。請參閱第 7.6.3 節,「MySQL Enterprise 執行緒集區」

  • thread_pool_stall_limit

    命令列格式 --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
    系統變數 thread_pool_transaction_delay
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 0
    最小值 0
    最大值 300000

    執行新交易之前的延遲時間,以毫秒為單位。最大值為 300000(5 分鐘)。

    在並行交易由於資源競爭而影響其他操作效能的情況下,可以使用交易延遲。例如,如果並行交易影響索引建立或線上緩衝池調整大小操作,則您可以設定交易延遲以減少這些操作執行時的資源競爭。

    工作執行緒會在執行新交易之前休眠 thread_pool_transaction_delay 指定的毫秒數。

    thread_pool_transaction_delay 設定不會影響從特權連線(指派給 Admin 執行緒群組的連線)發出的查詢。這些查詢不受設定的交易延遲的影響。

  • thread_stack

    命令列格式 --thread-stack=#
    系統變數 thread_stack
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 1048576
    最小值 131072
    最大值(64 位元平台) 18446744073709550592
    最大值(32 位元平台) 4294966272
    單位 位元組
    區塊大小 1024

    每個執行緒的堆疊大小。預設值足以用於正常操作。如果執行緒堆疊大小太小,它會限制伺服器可以處理的 SQL 語句的複雜性、預存程序的遞迴深度以及其他耗用記憶體的動作。

  • time_zone

    系統變數 time_zone
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 SYSTEM
    最小值 -13:59
    最大值 +14:00

    目前的時區。此變數用於初始化每個連線的客戶端的時區。預設情況下,此變數的初始值為 'SYSTEM'(表示 使用 system_time_zone 的值)。可以使用 --default-time-zone 選項在伺服器啟動時明確指定該值。請參閱 第 7.1.15 節「MySQL 伺服器時區支援」

    注意

    如果設定為 SYSTEM,則每個需要時區計算的 MySQL 函數呼叫都會進行系統程式庫呼叫以確定目前的系統時區。此呼叫可能受全域互斥鎖保護,導致競爭。

  • timestamp

    系統變數 timestamp
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 數值
    預設值 UNIX_TIMESTAMP()
    最小值 1
    最大值 2147483647

    設定此用戶端的時間。如果您使用二進位記錄檔還原列,則可以使用此設定取得原始時間戳記。timestamp_value 應該是 Unix epoch 時間戳記(類似於 UNIX_TIMESTAMP() 傳回的值,而不是 'YYYY-MM-DD hh:mm:ss' 格式的值)或 DEFAULT

    timestamp 設定為常數值會使其保留該值,直到再次變更為止。將 timestamp 設定為 DEFAULT 會使其值為存取時的目前日期和時間。

    timestampDOUBLE 而不是 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

    命令列格式 --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

    命令列格式 --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=#
    系統變數 tmp_table_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 16777216
    最小值 1024
    最大值 18446744073709551615
    單位 位元組

    定義 MEMORYTempTable 儲存引擎建立的內部記憶體暫存表格的最大大小。如果內部記憶體暫存表格超過此大小,則會自動轉換為磁碟上的內部暫存表格。

    tmp_table_size 變數不適用於使用者建立的 MEMORY 表格。不支援使用者建立的 TempTable 表格。

    當使用 MEMORY 儲存引擎作為內部記憶體暫存表格時,實際的大小限制為 tmp_table_sizemax_heap_table_size 中較小的值。max_heap_table_size 設定不適用於 TempTable 表格。

    如果您執行許多進階的 GROUP BY 查詢,並且擁有大量記憶體,請增加 tmp_table_size(以及在使用 MEMORY 儲存引擎作為內部記憶體暫存表格時,必要時增加 max_heap_table_size)的值。

    您可以透過比較 Created_tmp_disk_tablesCreated_tmp_tables 的值,來比較建立的內部磁碟暫存表格數量與建立的內部暫存表格總數。

    另請參閱第 10.4.4 節,「MySQL 中內部暫存表格的使用」

  • tmpdir

    命令列格式 --tmpdir=dir_name
    系統變數 tmpdir
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 目錄名稱

    用於建立暫存檔案的目錄路徑。如果您的預設 /tmp 目錄位於太小而無法容納暫存表格的分割區上,這可能很有用。此變數可以設定為以循環方式使用的多個路徑列表。在 Unix 上,路徑應以冒號字元 (:) 分隔,而在 Windows 上則應以分號字元 (;) 分隔。

    tmpdir 可以是非永久的位置,例如基於記憶體之檔案系統上的目錄,或伺服器主機重新啟動時會清除的目錄。如果 MySQL 伺服器作為副本,並且您使用非永久位置作為 tmpdir,請考慮使用 replica_load_tmpdir 變數為副本設定不同的暫存目錄。對於副本,用於複製 LOAD DATA 陳述式的暫存檔案會儲存在此目錄中,因此在永久位置中,它們可以在機器重新啟動後存活下來,儘管如果暫存檔案已移除,則複製現在可以在重新啟動後繼續。

    如需更多關於暫存檔案儲存位置的資訊,請參閱第 B.3.3.5 節,「MySQL 儲存暫存檔案的位置」

  • transaction_alloc_block_size

    命令列格式 --transaction-alloc-block-size=#
    系統變數 transaction_alloc_block_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 8192
    最小值 1024
    最大值 131072
    單位 位元組
    區塊大小 1024

    需要記憶體的每個交易記憶體集區所增加的位元組數。請參閱 transaction_prealloc_size 的描述。

  • transaction_isolation

    命令列格式 --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=#
    已棄用
    系統變數 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

    命令列格式 --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

    系統變數 unique_checks
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    若設定為 1(預設值),則會執行 InnoDB 資料表中次要索引的唯一性檢查。若設定為 0,則儲存引擎可以假設輸入資料中沒有重複的索引鍵。如果您確定您的資料沒有違反唯一性,則可以將此設定為 0,以加速大量資料表匯入 InnoDB 的速度。

    將此變數設定為 0 並不要求儲存引擎忽略重複索引鍵。引擎仍然可以檢查是否有重複索引鍵,並在偵測到時發出重複索引鍵錯誤。

  • updatable_views_with_limit

    命令列格式 --updatable-views-with-limit[={OFF|ON}]
    系統變數 updatable_views_with_limit
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 1

    當檢視表不包含基礎資料表中定義的主索引鍵的所有欄位時,如果更新陳述式包含 LIMIT 子句,則此變數會控制是否可以更新檢視表。(此類更新通常由 GUI 工具產生。)更新是 UPDATEDELETE 陳述式。此處的主索引鍵表示 PRIMARY KEYUNIQUE 索引,其中沒有任何欄位可以包含 NULL

    此變數可以有兩個值

    • 1YES:僅發出警告(而非錯誤訊息)。這是預設值。

    • 0NO:禁止更新。

  • use_secondary_engine

    系統變數 use_secondary_engine
    範圍 工作階段
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 ON
    有效值

    OFF

    ON

    FORCED

    供未來使用。

    是否要使用次要引擎執行查詢。

    用於 HeatWave。請參閱HeatWave 使用者指南

  • validate_password.xxx

    validate_password 元件會實作一組系統變數,其名稱形式為 validate_password.xxx。這些變數會影響該元件的密碼測試;請參閱 章節 8.4.3.2,「密碼驗證選項和變數」

  • version

    伺服器的版本號碼。此值也可能包含表示伺服器組建或組態資訊的後綴。-debug 表示伺服器是啟用偵錯支援所組建的。

  • version_comment

    系統變數 version_comment
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串

    CMake 組態程式有一個 COMPILATION_COMMENT_SERVER 選項,允許在組建 MySQL 時指定註解。此變數包含該註解的值。

  • version_compile_machine

    系統變數 version_compile_machine
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串

    伺服器二進位的類型。

  • version_compile_os

    系統變數 version_compile_os
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串

    MySQL 組建時所在的作業系統類型。

  • version_compile_zlib

    系統變數 version_compile_zlib
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串

    編譯時內建的 zlib 程式庫版本。

  • wait_timeout

    命令列格式 --wait-timeout=#
    系統變數 wait_timeout
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 整數
    預設值 28800
    最小值 1
    最大值 (Windows) 2147483
    最大值(其他) 31536000
    單位

    伺服器在關閉非互動式連線之前,等待活動的秒數。

    在執行緒啟動時,工作階段 wait_timeout 值會從全域 wait_timeout 值或從全域 interactive_timeout 值初始化,具體取決於用戶端的類型(如 mysql_real_connect()CLIENT_INTERACTIVE 連線選項所定義)。另請參閱 interactive_timeout

  • warning_count

    導致最後一個產生訊息的陳述式產生錯誤、警告和註解的數量。此變數為唯讀。請參閱 章節 15.7.7.41,「SHOW WARNINGS 陳述式」

  • windowing_use_high_precision

    命令列格式 --windowing-use-high-precision[={OFF|ON}]
    系統變數 windowing_use_high_precision
    範圍 全域、工作階段
    動態
    SET_VAR 提示適用
    類型 布林值
    預設值 ON

    是否在不損失精確度的情況下計算視窗作業。請參閱 章節 10.2.1.21,「視窗函式最佳化」

  • xa_detach_on_prepare

    命令列格式 --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 交易狀態」