文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 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 參考手冊  /  ...  /  MySQL Server 適用於 NDB 叢集的選項和變數

25.4.3.9 MySQL Server 適用於 NDB 叢集的選項和變數

本節提供有關特定於 NDB 叢集的 MySQL Server 選項、伺服器和狀態變數的資訊。如需使用這些的一般資訊,以及其他非特定於 NDB 叢集的選項和變數,請參閱第 7.1 節,「MySQL Server」

如需叢集設定檔(通常命名為 config.ini)中使用的 NDB 叢集設定參數,請參閱第 25.4 節,「NDB 叢集設定」

25.4.3.9.1 適用於 NDB 叢集的 MySQL Server 選項

本節提供與 NDB 叢集相關的 mysqld 伺服器選項的描述。如需有關非特定於 NDB 叢集的 mysqld 選項的資訊,以及有關使用 mysqld 選項的一般資訊,請參閱第 7.1.7 節,「伺服器命令選項」

如需有關其他 NDB 叢集處理程序使用的命令列選項的資訊,請參閱第 25.5 節,「NDB 叢集程式」

  • --ndbcluster

    命令列格式 --ndbcluster[=value]
    停用方式 skip-ndbcluster
    類型 列舉
    預設值 ON
    有效值

    OFF

    FORCE

    使用 NDB 叢集時,NDBCLUSTER 儲存引擎是必要的。如果 mysqld 二進制檔包含對 NDBCLUSTER 儲存引擎的支援,則預設會停用該引擎。使用 --ndbcluster 選項以啟用它。使用 --skip-ndbcluster 來明確停用引擎。

    如果同時使用了 --initialize,則會忽略 --ndbcluster 選項(並且 NDB 儲存引擎不會啟用)。(將此選項與 --initialize 一起使用既非必要也不可取。)

  • --ndb-allow-copying-alter-table=[ON|OFF]

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

    ALTER TABLE 和其他 DDL 陳述式在 NDB 資料表上使用複製操作。設定為 OFF 以避免發生此情況;這麼做可能會提高重要應用程式的效能。

  • --ndb-applier-allow-skip-epoch

    命令列格式 --ndb-applier-allow-skip-epoch
    系統變數 ndb_applier_allow_skip_epoch
    範圍 全域
    動態
    SET_VAR 提示套用

    --replica-skip-errors 一起使用,以使 NDB 忽略略過的 epoch 交易。單獨使用時無效。

  • --ndb-batch-size=#

    命令列格式 --ndb-batch-size
    系統變數 ndb_batch_size
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 32768
    最小值 0
    最大值 2147483648
    單位 位元組

    這會設定用於 NDB 交易批次的位元組大小。

  • --ndb-cluster-connection-pool=#

    命令列格式 --ndb-cluster-connection-pool
    系統變數 ndb_cluster_connection_pool
    系統變數 ndb_cluster_connection_pool
    範圍 全域
    範圍 全域
    動態
    動態
    SET_VAR 提示套用
    SET_VAR 提示套用
    類型 整數
    預設值 1
    最小值 1
    最大值 63

    透過將此選項設定為大於 1 的值(預設值),mysqld 處理程序可以使用與叢集的多個連線,有效地模擬數個 SQL 節點。每個連線都需要叢集設定 (config.ini) 檔中自己的 [api][mysqld] 區段,並計入叢集支援的 API 連線數目上限。

    假設您有 2 部叢集主機電腦,每部都執行一個 SQL 節點,其 mysqld 處理程序是使用 --ndb-cluster-connection-pool=4 啟動的;這表示叢集必須有 8 個 API 插槽可用於這些連線(而不是 2 個)。所有這些連線都是在 SQL 節點連線至叢集時設定的,並且會以循環配置的方式分配給執行緒。

    只有在具有多個 CPU、多個核心或兩者的主機電腦上執行 mysqld 時,此選項才有用。為了獲得最佳結果,該值應該小於主機電腦上可用的核心總數。將其設定為大於此值的值可能會嚴重降低效能。

    重要

    因為每個使用連線集區的 SQL 節點都會佔用多個 API 節點插槽 — 每個插槽在叢集中都有自己的節點 ID — 因此在啟動任何使用連線集區的 mysqld 處理程序時,請勿將節點 ID 用作叢集連線字串的一部分。

    當 SQL 節點嘗試連線至叢集時,在使用 --ndb-cluster-connection-pool 選項時,在連線字串中設定節點 ID 會導致節點 ID 配置錯誤。

  • --ndb-cluster-connection-pool-nodeids=list

    命令列格式 --ndb-cluster-connection-pool-nodeids
    系統變數 ndb_cluster_connection_pool_nodeids
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 設定
    預設值

    指定 SQL 節點用來連線至叢集的節點 ID 的逗號分隔清單。此清單中的節點數目必須與 --ndb-cluster-connection-pool 選項設定的值相同。

  • --ndb-blob-read-batch-bytes=bytes

    命令列格式 --ndb-blob-read-batch-bytes
    系統變數 ndb_blob_read_batch_bytes
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 65536
    最小值 0
    最大值 4294967295

    此選項可用於設定 NDB 叢集應用程式中 BLOB 資料讀取批次處理的大小(以位元組為單位)。當目前的交易中要讀取的 BLOB 資料量超過此批次大小時,會立即執行任何擱置的 BLOB 讀取操作。

    此選項的最大值為 4294967295;預設值為 65536。將其設定為 0 會停用 BLOB 讀取批次處理。

    注意

    在 NDB API 應用程式中,您可以使用 setMaxPendingBlobReadBytes()getMaxPendingBlobReadBytes() 方法來控制 BLOB 寫入批次處理。

  • --ndb-blob-write-batch-bytes=bytes

    命令列格式 --ndb-blob-write-batch-bytes
    系統變數 ndb_blob_write_batch_bytes
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 65536
    最小值 0
    最大值 4294967295
    單位 位元組

    此選項可用於設定 NDB 叢集應用程式中 BLOB 資料寫入批次處理的大小(以位元組為單位)。當目前的交易中要寫入的 BLOB 資料量超過此批次大小時,會立即執行任何擱置的 BLOB 寫入操作。

    此選項的最大值為 4294967295;預設值為 65536。將其設定為 0 會停用 BLOB 寫入批次處理。

    注意

    在 NDB API 應用程式中,您可以使用 BLOB 寫入批次處理,透過 setMaxPendingBlobWriteBytes()getMaxPendingBlobWriteBytes() 方法來控制。

  • --ndb-connectstring=connection_string

    命令列格式 --ndb-connectstring
    類型 字串

    當使用 NDBCLUSTER 儲存引擎時,此選項指定了分配叢集組態資料的管理伺服器。請參閱 章節 25.4.3.3,「NDB 叢集連線字串」,了解語法。

  • --ndb-default-column-format=[FIXED|DYNAMIC]

    命令列格式 --ndb-default-column-format={FIXED|DYNAMIC}
    系統變數 ndb_default_column_format
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 列舉
    預設值 FIXED
    有效值

    FIXED

    DYNAMIC

    設定新資料表的預設 COLUMN_FORMATROW_FORMAT(請參閱 章節 15.1.20,「CREATE TABLE 陳述式」)。預設值為 FIXED

  • --ndb-deferred-constraints=[0|1]

    命令列格式 --ndb-deferred-constraints
    系統變數 ndb_deferred_constraints
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 0
    最小值 0
    最大值 1

    控制在支援的情況下,是否將唯一索引上的約束檢查延遲到提交時間。預設值為 0

    此選項通常不是 NDB 叢集或 NDB 叢集複製運作所必需的,主要用於測試。

  • --ndb-schema-dist-timeout=#

    命令列格式 --ndb-schema-dist-timeout=#
    系統變數 ndb_schema_dist_timeout
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 120
    最小值 5
    最大值 1200
    單位

    指定此 mysqld 等待結構描述操作完成的最長時間(以秒為單位),之後會將其標記為逾時。

  • --ndb-distribution=[KEYHASH|LINHASH]

    命令列格式 --ndb-distribution={KEYHASH|LINHASH}
    系統變數 ndb_distribution
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 列舉
    預設值 KEYHASH
    有效值

    LINHASH

    KEYHASH

    控制 NDB 資料表的預設分配方法。可以設定為 KEYHASH(索引鍵雜湊)或 LINHASH(線性雜湊)。預設值為 KEYHASH

  • --ndb-log-apply-status

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

    使複本 mysqld 將從其直接來源收到的任何更新,使用自己的伺服器 ID 而不是來源的伺服器 ID,記錄到其自身二進制日誌的 mysql.ndb_apply_status 資料表中。在循環或鏈式複製設定中,這允許此類更新傳播到配置為目前 mysqld 的複本的任何 MySQL 伺服器的 mysql.ndb_apply_status 資料表中。

    在鏈式複製設定中,使用此選項允許下游(複本)叢集了解其相對於其所有上游貢獻者(來源)的位置。

    在循環複製設定中,此選項會使 ndb_apply_status 資料表的變更完成整個循環,最終傳播回原始 NDB 叢集。這也允許充當複製來源的叢集查看其變更(週期)何時已套用到循環中的其他叢集。

    除非使用 --ndbcluster 選項啟動 MySQL 伺服器,否則此選項無效。

  • --ndb-log-empty-epochs=[ON|OFF]

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

    使沒有變更的週期寫入到 ndb_apply_statusndb_binlog_index 資料表中,即使 log_replica_updates 已啟用也是如此。

    預設情況下,此選項已停用。停用 --ndb-log-empty-epochs 會導致沒有變更的週期交易不會寫入二進制日誌,儘管即使對於 ndb_binlog_index 中的空週期,仍會寫入一個資料列。

    由於 --ndb-log-empty-epochs=1 會導致 ndb_binlog_index 資料表的大小獨立於二進制日誌的大小而增加,因此使用者應準備好管理此資料表的成長,即使他們預期叢集大部分時間處於閒置狀態也是如此。

  • --ndb-log-empty-update=[ON|OFF]

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

    使沒有產生變更的更新寫入到 ndb_apply_statusndb_binlog_index 資料表中,即使 log_replica_updates 已啟用也是如此。

    預設情況下,此選項已停用 (OFF)。停用 --ndb-log-empty-update 會導致沒有變更的更新不會寫入二進制日誌。

  • --ndb-log-exclusive-reads=[0|1]

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

    使用此選項啟動伺服器會導致主索引鍵讀取記錄帶有獨佔鎖定,這允許基於讀取衝突的 NDB 叢集複製衝突偵測和解決方案。您也可以在執行時透過將 ndb_log_exclusive_reads 系統變數的值設定為 1 或 0 來分別啟用和停用這些鎖定。預設值為 0(停用鎖定)。

    如需更多資訊,請參閱 讀取衝突偵測和解決方案

  • --ndb-log-fail-terminate

    命令列格式 --ndb-log-fail-terminate
    系統變數 ndb_log_fail_terminate
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 FALSE

    當指定此選項,且無法完整記錄所有找到的資料列事件時,會終止 mysqld 處理程序。

  • --ndb-log-orig

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

    ndb_binlog_index 資料表中記錄原始伺服器 ID 和週期。

    注意

    這使得給定的週期可以在 ndb_binlog_index 中有多個資料列,每個原始週期一個。

    如需更多資訊,請參閱 章節 25.7.4,「NDB 叢集複製結構描述和資料表」

  • --ndb-log-transaction-dependency

    命令列格式 --ndb-log-transaction-dependency={true|false}
    系統變數 ndb_log_transaction_dependency
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 false

    使 NDB 二進制日誌記錄執行緒計算其寫入二進制日誌的每個交易的交易相依性。預設值為 FALSE

    此選項無法在執行時設定;對應的 ndb_log_transaction_dependency 系統變數為唯讀。

  • --ndb-log-transaction-id

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

    使複本 mysqld 在二進制日誌的每一列中寫入 NDB 交易 ID。預設值為 FALSE

    需要 --ndb-log-transaction-id 才能使用 NDB$EPOCH_TRANS() 函數啟用 NDB 叢集複製衝突偵測和解決方案(請參閱 NDB$EPOCH_TRANS())。如需更多資訊,請參閱 章節 25.7.12,「NDB 叢集複製衝突解決方案」

  • --ndb-log-update-as-write

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

    在來源上的更新是以更新 (OFF) 或寫入 (ON) 形式寫入二進制日誌。當啟用此選項,且 --ndb-log-updated-only--ndb-log-update-minimal 皆停用時,不同類型的操作會依照下列清單所述記錄

    • INSERT:記錄為沒有前影像的 WRITE_ROW 事件;後影像會記錄所有欄位。

      UPDATE:記錄為沒有前影像的 WRITE_ROW 事件;後影像會記錄所有欄位。

      DELETE:記錄為前影像中記錄所有欄位的 DELETE_ROW 事件;不會記錄後影像。

    此選項可與前面提到的另外兩個 NDB 日誌選項結合使用,以用於 NDB 複製衝突解決方案;請參閱 ndb_replication 資料表,了解更多資訊。

  • --ndb-log-updated-only

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

    mysqld 是否僅將更新 (ON) 或完整資料列 (OFF) 寫入二進制日誌。當啟用此選項,且 --ndb-log-update-as-write--ndb-log-update-minimal 皆停用時,不同類型的操作會依照下列清單所述記錄

    • INSERT:記錄為沒有前影像的 WRITE_ROW 事件;後影像會記錄所有欄位。

    • UPDATE:記錄為 UPDATE_ROW 事件,前影像和後影像中都存在主索引鍵欄位和已更新的欄位。

    • DELETE:記錄為前影像中包含主索引鍵欄位的 DELETE_ROW 事件;不會記錄後影像。

    此選項可與前面提到的另外兩個 NDB 日誌選項結合使用,以用於 NDB 複製衝突解決方案;請參閱 ndb_replication 資料表,了解更多有關這些選項如何彼此互動的資訊。

  • --ndb-log-update-minimal

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

    以最小的方式記錄更新,方法是在前影像中僅寫入主索引鍵值,在後影像中僅寫入變更的欄位。如果複製到 NDB 以外的儲存引擎,這可能會導致相容性問題。當啟用此選項,且 --ndb-log-updated-only--ndb-log-update-as-write 皆停用時,不同類型的操作會依照下列清單所述記錄

    • INSERT:記錄為沒有前影像的 WRITE_ROW 事件;後影像會記錄所有欄位。

    • UPDATE:記錄為前影像中包含主索引鍵欄位的 UPDATE_ROW 事件;所有欄位除了主索引鍵欄位外,都會記錄在後影像中。

    • DELETE:記錄為前影像中包含所有欄位的 DELETE_ROW 事件;不會記錄後影像。

    此選項可與前面提到的另外兩個 NDB 日誌選項結合使用,以用於 NDB 複製衝突解決方案;請參閱 ndb_replication 資料表,了解更多資訊。

  • --ndb-mgm-tls=[relaxed|strict]

    命令列格式 --ndb-mgm-tls=[strict|relaxed]
    系統變數 ndb_mgm_tls
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 列舉
    預設值 relaxed
    有效值

    relaxed

    strict

    設定連線至 NDB Cluster 的 TLS 連線所需的 TLS 支援層級;值為 relaxedstrict 其中之一。relaxed 表示嘗試 TLS 連線,但不要求必須成功;strict 表示必須使用 TLS 連線。預設值為 relaxed

  • --ndb-mgmd-host=host[:port]

    命令列格式 --ndb-mgmd-host=host_name[:port_num]
    類型 字串
    預設值 localhost:1186

    可用於設定程式要連線的單一管理伺服器的主機和連接埠號碼。如果程式在其連線資訊中需要節點 ID 或對多個管理伺服器 (或兩者) 的參照,請改用 --ndb-connectstring 選項。

  • --ndb-nodeid=#

    命令列格式 --ndb-nodeid=#
    狀態變數 Ndb_cluster_node_id
    範圍 全域
    動態
    類型 整數
    預設值 不適用
    最小值 1
    最大值 255
    最大值 63

    在 NDB Cluster 中設定此 MySQL 伺服器的節點 ID。

    --ndb-nodeid 選項會覆寫使用 --ndb-connectstring 設定的任何節點 ID,無論這兩個選項的使用順序為何。

    此外,如果使用 --ndb-nodeid,則必須在 config.ini[mysqld][api] 區段中找到相符的節點 ID,或者檔案中必須有一個 開啟[mysqld][api] 區段 (也就是說,一個未指定 NodeIdId 參數的區段)。如果節點 ID 指定為連線字串的一部分,情況也是如此。

    無論節點 ID 是如何決定的,它都會顯示為 SHOW STATUS 輸出的全域狀態變數 Ndb_cluster_node_id 的值,以及 SHOW ENGINE NDBCLUSTER STATUS 輸出中 connection 列的 cluster_node_id

    如需有關 NDB Cluster SQL 節點的節點 ID 的詳細資訊,請參閱 第 25.4.3.7 節,「在 NDB Cluster 中定義 SQL 和其他 API 節點」

  • --ndbinfo={ON|OFF|FORCE}

    命令列格式 --ndbinfo[=value]
    類型 列舉
    預設值 ON
    有效值

    ON

    OFF

    FORCE

    啟用 ndbinfo 資訊資料庫的外掛程式。預設情況下,只要啟用 NDBCLUSTER,此選項即為 ON。

  • --ndb-optimization-delay=milliseconds

    命令列格式 --ndb-optimization-delay=#
    系統變數 ndb_optimization_delay
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 10
    最小值 0
    最大值 100000
    單位 毫秒

    設定 OPTIMIZE TABLE 陳述式在 NDB 資料表上處理多組資料列之間等待的毫秒數。預設值為 10。

  • --ndb-optimized-node-selection

    命令列格式 --ndb-optimized-node-selection

    啟用交易節點選擇最佳化。預設為啟用;使用 --skip-ndb-optimized-node-selection 停用。

  • ndb-tls-search-path=path

    命令列格式 --ndb-tls-search-path=path
    系統變數 ndb_tls_search_path
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 路徑名稱
    預設值 (Unix) $HOME/tls
    預設值 (Windows) $HOMEDIR/tls

    要搜尋 NDB TLS 連線之 CA 和私密金鑰的目錄清單。該清單在 Unix 平台上以逗號分隔,在 Windows 上以分號分隔。

  • --ndb-transid-mysql-connection-map=state

    命令列格式 --ndb-transid-mysql-connection-map[=state]
    類型 列舉
    預設值 ON
    有效值

    ON

    OFF

    FORCE

    啟用或停用處理 INFORMATION_SCHEMA 資料庫中 ndb_transid_mysql_connection_map 資料表的外掛程式。採用 ONOFFFORCE 其中一個值。ON (預設值) 會啟用外掛程式。OFF 會停用外掛程式,這會使 ndb_transid_mysql_connection_map 無法存取。FORCE 如果外掛程式無法載入和啟動,則會阻止 MySQL 伺服器啟動。

    您可以透過檢查 SHOW PLUGINS 的輸出,查看 ndb_transid_mysql_connection_map 資料表外掛程式是否正在執行。

  • --ndb-wait-connected=seconds

    命令列格式 --ndb-wait-connected=#
    系統變數 ndb_wait_connected
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 120
    預設值 30
    最小值 0
    最大值 31536000
    單位

    此選項設定 MySQL 伺服器在接受 MySQL 用戶端連線之前,等待建立與 NDB Cluster 管理和資料節點連線的時間長度。時間以秒為單位指定。預設值為 30

  • --ndb-wait-setup=seconds

    命令列格式 --ndb-wait-setup=#
    系統變數 ndb_wait_setup
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 120
    預設值 30
    預設值 15
    預設值 15
    最小值 0
    最大值 31536000
    單位

    此變數顯示 MySQL 伺服器等待 NDB 儲存引擎完成設定,然後逾時並將 NDB 視為無法使用的時間長度。時間以秒為單位指定。預設值為 30

  • --skip-ndbcluster

    命令列格式 --skip-ndbcluster

    停用 NDBCLUSTER 儲存引擎。這是為支援 NDBCLUSTER 儲存引擎而建置的二進位檔的預設值;只有在明確給定 --ndbcluster 選項時,伺服器才會為此儲存引擎配置記憶體和其他資源。如需範例,請參閱 第 25.4.1 節,「NDB Cluster 的快速測試設定」

25.4.3.9.2 NDB Cluster 系統變數

本節提供有關特定於 NDB Cluster 和 NDB 儲存引擎的 MySQL 伺服器系統變數的詳細資訊。對於非特定於 NDB Cluster 的系統變數,請參閱 第 7.1.8 節,「伺服器系統變數」。如需有關使用系統變數的一般資訊,請參閱 第 7.1.9 節,「使用系統變數」

  • ndb_autoincrement_prefetch_sz

    命令列格式 --ndb-autoincrement-prefetch-sz=#
    系統變數 ndb_autoincrement_prefetch_sz
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 512
    最小值 1
    最大值 65536

    決定自動遞增資料行中出現間隙的機率。將其設定為 1 可將此機率降至最低。將其設定為較高的值進行最佳化可加快插入速度,但會降低在批次插入中使用連續自動遞增數字的可能性。

    此變數只會影響陳述式之間擷取的 AUTO_INCREMENT ID 數量;在給定的陳述式中,一次至少取得 32 個 ID。

    重要

    此變數不會影響使用 INSERT ... SELECT 執行的插入作業。

  • ndb_clear_apply_status

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

    預設情況下,執行 RESET REPLICA 會導致 NDB Cluster 複本從其 ndb_apply_status 資料表中清除所有資料列。您可以透過設定 ndb_clear_apply_status=OFF 來停用此功能。

  • ndb_conflict_role

    命令列格式 --ndb-conflict-role=value
    系統變數 ndb_conflict_role
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 列舉
    預設值 NONE
    有效值

    NONE

    PRIMARY

    SECONDARY

    PASS

    決定此 SQL 節點 (和 NDB Cluster) 在環狀 (作用中-作用中) 複寫設定中的角色。ndb_conflict_role 可以採用 PRIMARYSECONDARYPASSNULL (預設值) 其中一個值。必須先停止複本 SQL 執行緒,才能變更 ndb_conflict_role。此外,無法在 PASSPRIMARYSECONDARY 其中一個之間直接變更;在這種情況下,您必須確保已停止 SQL 執行緒,然後先執行 SET @@GLOBAL.ndb_conflict_role = 'NONE'

    此變數取代已棄用的 ndb_slave_conflict_role

    如需詳細資訊,請參閱 第 25.7.12 節,「NDB Cluster 複寫衝突解決」

  • ndb_data_node_neighbour

    命令列格式 --ndb-data-node-neighbour=#
    系統變數 ndb_data_node_neighbour
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 0
    最小值 0
    最大值 255

    設定 最近資料節點的 ID,也就是說,會選擇較佳的非本機資料節點來執行交易,而不是在與 SQL 或 API 節點相同的主機上執行的節點。過去曾用來確保在存取完整複寫資料表時,我們會在此資料節點上存取,以確保在可能的情況下,始終使用資料表的本機複本。這也可以用於提供交易的提示。

    如果節點在實體上比同一主機上的其他節點更接近,且因此具有更高的網路輸送量,這可以縮短資料存取時間。

    如需更多資訊,請參閱 第 15.1.20.12 節,「設定 NDB 註解選項」

    注意

    NDB API 應用程式中提供等效的方法 set_data_node_neighbour() 來使用。

  • ndb_dbg_check_shares

    命令列格式 --ndb-dbg-check-shares=#
    系統變數 ndb_dbg_check_shares
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 0
    最小值 0
    最大值 1

    設定為 1 時,檢查是否有任何共用仍在存在。僅在偵錯組建中可用。

  • ndb_default_column_format

    命令列格式 --ndb-default-column-format={FIXED|DYNAMIC}
    系統變數 ndb_default_column_format
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 列舉
    預設值 FIXED
    有效值

    FIXED

    DYNAMIC

    設定新資料表的預設 COLUMN_FORMATROW_FORMAT(請參閱 章節 15.1.20,「CREATE TABLE 陳述式」)。預設值為 FIXED

  • ndb_deferred_constraints

    命令列格式 --ndb-deferred-constraints=#
    系統變數 ndb_deferred_constraints
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 0
    最小值 0
    最大值 1

    控制是否延遲條件約束檢查 (如果支援)。預設值為 0

    此變數通常不是 NDB Cluster 或 NDB Cluster 複寫作業所必需的,主要用於測試。

  • ndb_distribution

    命令列格式 --ndb-distribution={KEYHASH|LINHASH}
    系統變數 ndb_distribution
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 列舉
    預設值 KEYHASH
    有效值

    LINHASH

    KEYHASH

    控制 NDB 資料表的預設分配方法。可以設定為 KEYHASH(索引鍵雜湊)或 LINHASH(線性雜湊)。預設值為 KEYHASH

  • ndb_eventbuffer_free_percent

    命令列格式 --ndb-eventbuffer-free-percent=#
    系統變數 ndb_eventbuffer_free_percent
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 20
    最小值 1
    最大值 99

    設定事件緩衝區 (ndb_eventbuffer_max_alloc) 所配置最大記憶體百分比,此百分比表示在達到最大值後,事件緩衝區應有的可用空間,達到此可用空間後才會開始再次緩衝。

  • ndb_eventbuffer_max_alloc

    命令列格式 --ndb-eventbuffer-max-alloc=#
    系統變數 ndb_eventbuffer_max_alloc
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 0
    最小值 0
    最大值 9223372036854775807

    設定 NDB API 可配置用於緩衝事件的最大記憶體量 (以位元組為單位)。0 表示不施加任何限制,這是預設值。

  • ndb_extra_logging

    命令列格式 ndb_extra_logging=#
    系統變數 ndb_extra_logging
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 1
    最小值 0
    最大值 1

    此變數啟用在 MySQL 錯誤日誌中記錄特定於 NDB 儲存引擎的資訊。

    當此變數設定為 0 時,寫入 MySQL 錯誤日誌的特定於 NDB 的資訊僅與交易處理相關。如果將其設定為大於 0 但小於 10 的值,也會記錄 NDB 資料表綱要和連線事件,以及是否正在使用衝突解決,以及其他 NDB 錯誤和資訊。如果將值設定為 10 或更大,則也會將關於 NDB 內部資訊(例如叢集節點之間資料分配的進度)寫入 MySQL 錯誤日誌。預設值為 1。

  • ndb_force_send

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

    強制立即將緩衝區傳送至 NDB,而無需等待其他執行緒。預設為 ON

  • ndb_fully_replicated

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

    決定是否完全複製新的 NDB 資料表。可以使用 CREATE TABLEALTER TABLE 陳述式中的 COMMENT="NDB_TABLE=FULLY_REPLICATED=..." 來覆寫個別資料表的此設定;有關語法和其他資訊,請參閱第 15.1.20.12 節,「設定 NDB 註解選項」

  • ndb_index_stat_enable

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

    在查詢最佳化中使用 NDB 索引統計資料。預設值為 ON

    無論此選項的值為何,在伺服器啟動時都會建立索引統計資料表。

  • ndb_index_stat_option

    命令列格式 --ndb-index-stat-option=value
    系統變數 ndb_index_stat_option
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 字串
    預設值 loop_checkon=1000ms,loop_idle=1000ms,loop_busy=100ms, update_batch=1,read_batch=4,idle_batch=32,check_batch=32, check_delay=1m,delete_batch=8,clean_delay=0,error_batch=4, error_delay=1m,evict_batch=8,evict_delay=1m,cache_limit=32M, cache_lowpct=90

    此變數用於為 NDB 索引統計資料產生提供調整選項。該清單由以逗號分隔的選項名稱和值配對組成,此清單不得包含任何空格字元。

    設定 ndb_index_stat_option 時未使用的選項,其值不會從預設值變更。例如,您可以設定 ndb_index_stat_option = 'loop_idle=1000ms,cache_limit=32M'

    時間值可以選擇性地加上 h(小時)、m(分鐘)或 s(秒)作為後綴。可以使用 ms 選擇性地指定毫秒值;無法使用 hms 指定毫秒值。) 整數值可以加上 KMG 作為後綴。

    可以使用此變數設定的選項名稱顯示在下表中。該表還提供了選項的簡要描述、預設值以及(如果適用)最小值和最大值。

    表 25.19 ndb_index_stat_option 選項和值

    名稱 描述 預設值/單位 最小值/最大值
    loop_enable 1000 毫秒 0/4G
    loop_idle 閒置時的休眠時間 1000 毫秒 0/4G
    loop_busy 當有更多工作等待時的休眠時間 100 毫秒 0/4G
    update_batch 1 0/4G
    read_batch 4 1/4G
    idle_batch 32 1/4G
    check_batch 8 1/4G
    check_delay 檢查新統計資料的頻率 10 分鐘 1/4G
    delete_batch 8 0/4G
    clean_delay 1 分鐘 0/4G
    error_batch 4 1/4G
    error_delay 1 分鐘 1/4G
    evict_batch 8 1/4G
    evict_delay 從讀取時間清理 LRU 快取 1 分鐘 0/4G
    cache_limit mysqld 快取索引統計資料所使用的最大記憶體量 (以位元組為單位);超出此值時清理快取。 32 MB 0/4G
    cache_lowpct 90 0/100
    zero_total 將此設定為 1 會將 ndb_index_stat_status 中所有累積計數器重設為 0。執行此操作後,此選項值也會重設為 0。 0 0/1

  • ndb_join_pushdown

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

    此變數控制是否將 NDB 資料表的聯結向下推送至 NDB 核心 (資料節點)。先前,聯結是透過 SQL 節點對 NDB 的多次存取來處理;但是,當啟用 ndb_join_pushdown 時,可推送的聯結會整體傳送至資料節點,資料節點可以在資料節點之間分配聯結,並在多個資料複本上平行執行,然後將單一合併結果傳回至 mysqld。這可以大幅減少 SQL 節點和資料節點之間處理此類聯結所需的往返次數。

    預設情況下,啟用 ndb_join_pushdown

    NDB 推送聯結的條件。 為了使聯結可推送,它必須滿足以下條件

    1. 只能比較資料行,並且所有要聯結的資料行都必須使用完全相同的資料類型。這表示(例如)無法向下推送 INT 資料行和 BIGINT 資料行上的聯結。

      也可以向下推送比較來自相同資料表的資料行的運算式。資料行(或對這些資料行執行任何運算的結果)必須具有完全相同的類型,包括相同的正負號、長度、字元集和定序、精確度和比例(如果適用)。

    2. 不支援參考 BLOBTEXT 資料行的查詢。

    3. 不支援明確鎖定;但是,會強制執行 NDB 儲存引擎的特性隱式以列為基礎的鎖定。

      這表示無法向下推送使用 FOR UPDATE 的聯結。

    4. 為了向下推送聯結,聯結中的子資料表必須使用 refeq_refconst 存取方法之一,或者這些方法的某種組合來存取。

      只能使用 eq_ref 來推送外部聯結的子資料表。

      如果推送聯結的根是 eq_refconst,則只能附加以 eq_ref 聯結的子資料表。(以 ref 聯結的資料表很可能成為另一個推送聯結的根。)

      如果查詢最佳化工具為候選子資料表決定 Using join cache,則該資料表無法推送為子資料表。但是,它可能是另一組已推送資料表的根。

    5. 目前無法向下推送參考以 [LINEAR] HASHLISTRANGE 明確分割的資料表的聯結。

    您可以使用 EXPLAIN 檢查是否可以向下推送給定的聯結;當可以向下推送聯結時,您可以在輸出的 Extra 資料行中看到對 pushed join 的參考,如此範例所示

    mysql> EXPLAIN
        ->     SELECT e.first_name, e.last_name, t.title, d.dept_name
        ->         FROM employees e
        ->         JOIN dept_emp de ON e.emp_no=de.emp_no
        ->         JOIN departments d ON d.dept_no=de.dept_no
        ->         JOIN titles t ON e.emp_no=t.emp_no\G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: d
             type: ALL
    possible_keys: PRIMARY
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 9
            Extra: Parent of 4 pushed join@1
    *************************** 2. row ***************************
               id: 1
      select_type: SIMPLE
            table: de
             type: ref
    possible_keys: PRIMARY,emp_no,dept_no
              key: dept_no
          key_len: 4
              ref: employees.d.dept_no
             rows: 5305
            Extra: Child of 'd' in pushed join@1
    *************************** 3. row ***************************
               id: 1
      select_type: SIMPLE
            table: e
             type: eq_ref
    possible_keys: PRIMARY
              key: PRIMARY
          key_len: 4
              ref: employees.de.emp_no
             rows: 1
            Extra: Child of 'de' in pushed join@1
    *************************** 4. row ***************************
               id: 1
      select_type: SIMPLE
            table: t
             type: ref
    possible_keys: PRIMARY,emp_no
              key: emp_no
          key_len: 4
              ref: employees.de.emp_no
             rows: 19
            Extra: Child of 'e' in pushed join@1
    4 rows in set (0.00 sec)
    注意

    如果內部聯結的子資料表以 ref 聯結,結果是依排序索引排序或分組,則此索引無法提供排序的資料列,這會強制寫入排序的暫存檔。

    還有另外兩種關於推送聯結效能的資訊來源

  • ndb_log_apply_status

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

    一個唯讀變數,顯示伺服器是否以 --ndb-log-apply-status 選項啟動。

  • ndb_log_bin

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

    導致對 NDB 表格的更新寫入二進位日誌。如果伺服器上尚未啟用使用 log_bin 的二進位記錄,則此變數的設定無效。ndb_log_bin 預設為 0 (FALSE)。

  • ndb_log_binlog_index

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

    導致將 epochs 對應到二進位日誌中的位置的映射插入到 ndb_binlog_index 表格。如果伺服器尚未使用 log_bin 啟用二進位記錄,則設定此變數無效。(此外,不得停用 ndb_log_bin。)ndb_log_binlog_index 預設為 1 (ON);通常,在生產環境中永遠不需要變更此值。

  • ndb_log_empty_epochs

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

    當此變數設定為 0 時,即使在 ndb_binlog_index 中,即使是空的 epoch,也會寫入一行,但沒有變更的 epoch 交易不會寫入二進位日誌。

  • ndb_log_empty_update

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

    當此變數設定為 ON (1) 時,即使啟用了 log_replica_updates,沒有變更的更新交易也會寫入二進位日誌。

  • ndb_log_exclusive_reads

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

    此變數決定主鍵讀取是否使用互斥鎖記錄,這允許基於讀取衝突進行 NDB Cluster 複製衝突偵測和解決。若要啟用這些鎖定,請將 ndb_log_exclusive_reads 的值設定為 1。 0(停用此類鎖定)是預設值。

    如需更多資訊,請參閱 讀取衝突偵測和解決方案

  • ndb_log_orig

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

    顯示來源伺服器 ID 和 epoch 是否記錄在 ndb_binlog_index 表格中。使用 --ndb-log-orig 伺服器選項設定。

  • ndb_log_transaction_id

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

    此唯讀布林系統變數顯示複本 mysqld 是否將 NDB 交易 ID 寫入二進位日誌(使用 主動-主動 NDB Cluster 複寫以及 NDB$EPOCH_TRANS() 衝突偵測所必需)。若要變更設定,請使用 --ndb-log-transaction-id 選項。

    ndb_log_transaction_id 在主線 MySQL Server 8.4 中不受支援。

    如需詳細資訊,請參閱 第 25.7.12 節,「NDB Cluster 複寫衝突解決」

  • ndb_log_transaction_compression

    命令列格式 --ndb-log-transaction-compression
    系統變數 ndb_log_transaction_compression
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 OFF

    複本 mysqld 是否將壓縮交易寫入二進位日誌;僅當 mysqld 編譯時支援 NDB 時才存在。

    您應該注意,使用 --binlog-transaction-compression 啟動 MySQL 伺服器會強制啟用此變數 (ON),並且這會覆寫在命令列或 my.cnf 檔案中所做的任何 --ndb-log-transaction-compression 設定,如下所示

    $> mysqld_safe --ndbcluster --ndb-connectstring=127.0.0.1 \
      --binlog-transaction-compression=ON --ndb-log-transaction-compression=OFF &
    [1] 27667
    $> 2022-07-07T12:29:20.459937Z mysqld_safe Logging to '/usr/local/mysql/data/myhost.err'.
    2022-07-07T12:29:20.509873Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
    
    $> mysql -e 'SHOW VARIABLES LIKE "%transaction_compression%"'
    +--------------------------------------------+-------+
    | Variable_name                              | Value |
    +--------------------------------------------+-------+
    | binlog_transaction_compression             | ON    |
    | binlog_transaction_compression_level_zstd  | 3     |
    | ndb_log_transaction_compression            | ON    |
    | ndb_log_transaction_compression_level_zstd | 3     |
    +--------------------------------------------+-------+

    若要僅針對 NDB 表格停用二進位日誌交易壓縮,請在啟動 mysqld 之後,在 mysql 或其他用戶端會話中,將 ndb_log_transaction_compression 系統變數設定為 OFF

    啟動後設定 binlog_transaction_compression 變數對 ndb_log_transaction_compression 的值沒有影響。

    如需二進位日誌交易壓縮的詳細資訊,例如哪些事件會或不會壓縮,以及使用此功能時應注意的行為變更,請參閱 第 7.4.4.5 節,〈二進位日誌交易壓縮〉

  • ndb_log_transaction_compression_level_zstd

    命令列格式 --ndb-log-transaction-compression-level-zstd=#
    系統變數 ndb_log_transaction_compression_level_zstd
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 3
    最小值 1
    最大值 22

    如果啟用 ndb_log_transaction_compression,則用於將壓縮交易寫入複本二進位日誌的 ZSTD 壓縮層級。如果 mysqld 編譯時不支援 NDB 儲存引擎,則不支援。

    如需詳細資訊,請參閱 第 7.4.4.5 節,〈二進位日誌交易壓縮〉

  • ndb_metadata_check

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

    NDB 使用背景執行緒每 ndb_metadata_check_interval 秒檢查一次中繼資料變更,與 MySQL 資料字典進行比較。可以透過將 ndb_metadata_check 設定為 OFF 來停用此中繼資料變更偵測執行緒。預設會啟用此執行緒。

  • ndb_metadata_check_interval

    命令列格式 --ndb-metadata-check-interval=#
    系統變數 ndb_metadata_check_interval
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 60
    最小值 0
    最大值 31536000
    單位

    NDB 在背景執行中繼資料變更偵測執行緒,以判斷 NDB 字典何時相對於 MySQL 資料字典發生變更。預設情況下,此類檢查之間的時間間隔為 60 秒;可以透過設定 ndb_metadata_check_interval 的值來調整此值。若要啟用或停用執行緒,請使用 ndb_metadata_check

  • ndb_metadata_sync

    系統變數 ndb_metadata_sync
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 false

    設定此變數會導致變更監視器執行緒覆寫為 ndb_metadata_checkndb_metadata_check_interval 設定的任何值,並進入持續變更偵測的期間。當執行緒確定不再有任何變更需要偵測時,它會暫停,直到二進位記錄執行緒完成所有偵測到物件的同步處理。ndb_metadata_sync 然後會設定為 false,而變更監視器執行緒會恢復為由 ndb_metadata_checkndb_metadata_check_interval 設定所決定的行為。

    將此變數設定為 true 會導致清除排除物件清單;將其設定為 false 會清除要重試的物件清單。

  • ndb_optimized_node_selection

    命令列格式 --ndb-optimized-node-selection=#
    系統變數 ndb_optimized_node_selection
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 3
    最小值 0
    最大值 3

    有兩種形式的最佳化節點選擇,此處說明

    1. SQL 節點使用鄰近性來判斷交易協調器;也就是說,選擇 最靠近 SQL 節點的資料節點作為交易協調器。為此,與 SQL 節點具有共用記憶體連線的資料節點被視為 最靠近 SQL 節點;接下來最靠近的(依鄰近性遞減順序)是:與 localhost 的 TCP 連線,然後是來自 localhost 以外主機的 TCP 連線。

    2. SQL 執行緒使用分佈感知來選取資料節點。也就是說,由給定交易的第一個陳述式存取的叢集分割區所在的資料節點會用作整個交易的交易協調器。(只有當交易的第一個陳述式存取不超過一個叢集分割區時,此方法才有效。)

    此選項採用其中一個整數值 01233 是預設值。這些值會以下列方式影響節點選擇

    • 0:節點選擇未最佳化。每個資料節點會被用作交易協調器 8 次,SQL 執行緒才會繼續處理下一個資料節點。

    • 1:使用與 SQL 節點的鄰近性來判斷交易協調器。

    • 2:使用分佈感知來選取交易協調器。但是,如果交易的第一個陳述式存取超過一個叢集分割區,則 SQL 節點會恢復為將此選項設定為 0 時看到的循環配置資源行為。

    • 3:如果可以使用分佈感知來判斷交易協調器,則會使用;否則會使用鄰近性來選取交易協調器。(這是預設行為。)

    鄰近性判斷如下

    1. 從為 Group 參數設定的值開始(預設值 55)。

    2. 對於與其他 API 節點共用相同主機的 API 節點,將值遞減 1。假設 Group 的預設值,與 API 節點相同主機上的資料節點的有效值為 54,而遠端資料節點的有效值為 55。

    3. 設定 ndb_data_node_neighbour 會進一步將有效的 Group 值減少 50,導致此節點被視為最近的節點。只有在所有資料節點都位於 API 節點所在主機以外的主機上,且希望將其中一個節點專用於 API 節點時,才需要這樣做。在正常情況下,先前描述的預設調整已足夠。

    不建議頻繁變更 ndb_data_node_neighbour,因為這會變更叢集連線的狀態,因此可能會擾亂每個執行緒選取新交易的演算法,直到其穩定下來。

  • ndb_read_backup

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

    針對後續建立的任何 NDB 資料表,啟用從任何片段複本讀取的功能;這樣做會大幅提升資料表的讀取效能,但寫入成本相對較小。

    如果 SQL 節點和資料節點使用相同的主機名稱或 IP 位址,則會自動偵測到此情況,因此會優先將讀取傳送到相同的主機。如果這些節點位於同一主機上,但使用不同的 IP 位址,您可以藉由將 SQL 節點上的 ndb_data_node_neighbour 值設定為資料節點的節點 ID,來告知 SQL 節點使用正確的資料節點。

    若要針對個別資料表啟用或停用從任何片段複本讀取的功能,您可以在 CREATE TABLEALTER TABLE 陳述式中,為資料表設定 NDB_TABLE 選項 READ_BACKUP;如需更多資訊,請參閱 第 15.1.20.12 節,「設定 NDB 註解選項」

  • ndb_recv_thread_activation_threshold

    命令列格式 --ndb-recv-thread-activation-threshold=#
    系統變數 ndb_recv_thread_activation_threshold
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 8
    最小值 0 (MIN_ACTIVATION_THRESHOLD)
    最大值 16 (MAX_ACTIVATION_THRESHOLD)

    當達到這個數量的並行作用中執行緒時,接收執行緒會接管叢集連線的輪詢。

    此變數的作用域為全域。也可以在啟動時設定。

  • ndb_recv_thread_cpu_mask

    命令列格式 --ndb-recv-thread-cpu-mask=mask
    系統變數 ndb_recv_thread_cpu_mask
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 位元遮罩
    預設值 [空白]

    用於將接收執行緒鎖定至特定 CPU 的 CPU 遮罩。此值指定為十六進位位元遮罩。例如,0x33 表示每個接收執行緒使用一個 CPU。空白字串為預設值;將 ndb_recv_thread_cpu_mask 設定為此值會移除先前設定的任何接收執行緒鎖定。

    此變數的作用域為全域。也可以在啟動時設定。

  • ndb_report_thresh_binlog_epoch_slip

    命令列格式 --ndb-report-thresh-binlog-epoch-slip=#
    系統變數 ndb_report_thresh_binlog_epoch_slip
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 10
    最小值 0
    最大值 256

    這表示事件緩衝區中完全緩衝,但尚未由二進位日誌注入器執行緒使用的 epoch 數量閾值。當超出此程度的滑移(延遲)時,會報告事件緩衝區狀態訊息,並以 BUFFERED_EPOCHS_OVER_THRESHOLD 作為原因(請參閱 第 25.6.2.3 節,「叢集日誌中的事件緩衝區報告」)。當從資料節點收到 epoch 並在事件緩衝區中完全緩衝時,滑移會增加;當二進位日誌注入器執行緒使用 epoch 時,滑移會減少。只有在使用 NDB API 中的 Ndb::setEventBufferQueueEmptyEpoch() 方法啟用此功能時,才會緩衝和佇列空的 epoch,因此納入此計算中。

  • ndb_report_thresh_binlog_mem_usage

    命令列格式 --ndb-report-thresh-binlog-mem-usage=#
    系統變數 ndb_report_thresh_binlog_mem_usage
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 10
    最小值 0
    最大值 10

    這是報告二進位日誌狀態之前,剩餘可用記憶體的百分比閾值。例如,值為 10(預設值)表示如果從資料節點接收二進位日誌資料的可用記憶體量低於 10%,則會將狀態訊息傳送到叢集日誌。

  • ndb_row_checksum

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

    傳統上,NDB 會建立具有資料列總和檢查碼的資料表,這會檢查硬體問題,但會犧牲效能。將 ndb_row_checksum 設定為 0 表示新資料表或變更的資料表使用資料列總和檢查碼,這對所有類型的查詢效能都有顯著影響。此變數預設設定為 1,以提供回溯相容行為。

  • ndb_schema_dist_lock_wait_timeout

    命令列格式 --ndb-schema-dist-lock-wait-timeout=value
    系統變數 ndb_schema_dist_lock_wait_timeout
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 30
    最小值 0
    最大值 1200
    單位

    在綱要散佈期間,為了變更其本機資料字典以反映 DDL 陳述式變更,而等待在每個 SQL 節點上取得的中繼資料鎖定的秒數。經過此時間後,會傳回警告,指出指定的 SQL 節點的資料字典未以變更更新。這可避免二進位日誌執行緒在處理綱要作業時等待過長的時間。

  • ndb_schema_dist_timeout

    命令列格式 --ndb-schema-dist-timeout=value
    系統變數 ndb_schema_dist_timeout
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 120
    最小值 5
    最大值 1200
    單位

    在綱要散佈期間偵測逾時之前,要等待的秒數。這可能表示其他 SQL 節點正在經歷過多的活動,或者它們目前以某種方式被阻止取得必要的資源。

  • ndb_schema_dist_upgrade_allowed

    命令列格式 --ndb-schema-dist-upgrade-allowed=value
    系統變數 ndb_schema_dist_upgrade_allowed
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 true

    允許在連線至 NDB 時升級綱要散佈資料表。當為 true(預設值)時,此變更會延遲,直到所有 SQL 節點都升級到相同版本的 NDB 叢集軟體。

    注意

    在執行升級之前,綱要散佈的效能可能會稍微降低。

  • ndb_show_foreign_key_mock_tables

    命令列格式 --ndb-show-foreign-key-mock-tables[={OFF|ON}]
    系統變數 ndb_show_foreign_key_mock_tables
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 OFF

    顯示 NDB 用於支援 foreign_key_checks=0 的模擬資料表。當啟用此功能時,建立和卸載資料表時會顯示額外的警告。可以在 SHOW CREATE TABLE 的輸出中看到資料表的真實(內部)名稱。

  • ndb_slave_conflict_role

    命令列格式 --ndb-slave-conflict-role=value
    已過時
    系統變數 ndb_slave_conflict_role
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 列舉
    預設值 NONE
    有效值

    NONE

    PRIMARY

    SECONDARY

    PASS

    已過時的 ndb_conflict_role 同義詞。

  • ndb_table_no_logging

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

    當此變數設定為 ON1 時,會導致使用 ENGINE NDB 建立或變更的所有資料表成為非記錄狀態;也就是說,此資料表的任何資料變更都不會寫入重做日誌,也不會檢查點到磁碟,就像使用 CREATE TABLEALTER TABLENOLOGGING 選項建立或變更資料表一樣。

    如需有關非記錄 NDB 資料表的更多資訊,請參閱 NDB_TABLE 選項

    ndb_table_no_logging 對於建立 NDB 資料表綱要檔案沒有影響;若要禁止這些檔案,請改用 ndb_table_temporary

  • ndb_table_temporary

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

    當設定為 ON1 時,此變數會導致 NDB 資料表不會寫入磁碟:這表示不會建立任何資料表綱要檔案,而且不會記錄資料表。

    注意

    目前設定此變數沒有任何作用。這是一個已知問題;請參閱錯誤 #34036。

  • ndb_use_copying_alter_table

    系統變數 ndb_use_copying_alter_table
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用

    強制 NDB 在線上 ALTER TABLE 作業發生問題時,使用資料表複製。預設值為 OFF

  • ndb_use_exact_count

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

    強制 NDBSELECT COUNT(*) 查詢規劃期間使用記錄計數,以加快此類型的查詢。預設值為 OFF,這允許整體更快的查詢。

  • ndb_use_transactions

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

    您可以將此變數的值設定為 OFF 來停用 NDB 交易支援。一般不建議這樣做,但在給定用戶端工作階段用於匯入具有大型交易的一或多個傾印檔案時,停用該工作階段內的交易支援可能很有用;這允許以多個部分執行多資料列插入,而不是以單一交易執行。在這種情況下,一旦完成匯入,您應該將此工作階段的變數值重設為 ON,或直接終止工作階段。

  • ndb_version

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

    NDB 引擎版本,以複合整數表示。

  • ndb_version_string

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

    NDB 引擎版本,格式為 ndb-x.y.z

  • replica_allow_batching

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

    是否在 NDB 叢集複本上啟用批次更新。

    允許在複本上進行批次更新會大幅提升效能,尤其是在複寫 TEXTBLOBJSON 資料行時。因此,預設會啟用 replica_allow_batching

    僅當使用 NDB 儲存引擎進行複製時,設定此變數才會生效;在 MySQL Server 8.4 中,它存在但不執行任何操作。如需更多資訊,請參閱第 25.7.6 節,「啟動 NDB Cluster 複製 (單一複製通道)」

  • ndb_replica_batch_size

    命令列格式 --ndb-replica-batch-size=#
    系統變數 ndb_replica_batch_size
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 2097152
    最小值 0
    最大值 2147483648
    單位 位元組

    決定複製應用程式執行緒使用的批次大小(以位元組為單位)。設定此變數,而不是 --ndb-batch-size 選項,以將此設定應用於複本,而排除任何其他工作階段。

    如果此變數未設定(預設為 2 MB),則其有效值為 --ndb-batch-size 的值與 2 MB 之間較大的值。

  • ndb_replica_blob_write_batch_bytes

    命令列格式 --ndb-replica-blob-write-batch-bytes=#
    系統變數 ndb_replica_blob_write_batch_bytes
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 2097152
    最小值 0
    最大值 2147483648
    單位 位元組

    控制複製應用程式執行緒用於 BLOB 資料的批次寫入大小。

    使用此變數,而不是 --ndb-blob-write-batch-bytes 選項,以控制複本上的 BLOB 批次寫入大小,而排除任何其他工作階段。這樣做的原因是,當 ndb_replica_blob_write_batch_bytes 未設定時,有效的 BLOB 批次大小(即,BLOB 資料行要寫入的最大待寫入位元組數)由 --ndb-blob-write-batch-bytes 的值與 2 MB(ndb_replica_blob_write_batch_bytes 的預設值)之間較大的值決定。

    ndb_replica_blob_write_batch_bytes 設定為 0 表示 NDB 不限制複本上的 BLOB 批次寫入大小。

  • server_id_bits

    命令列格式 --server-id-bits=#
    系統變數 server_id_bits
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 32
    最小值 7
    最大值 32

    此變數表示 32 位元 server_id 中,實際識別伺服器的最不重要位元數。指示伺服器實際上由少於 32 個位元識別,可以讓一些剩餘的位元用於其他目的,例如在 OperationOptions 結構的 AnyValue 中儲存使用 NDB API 的 Event API 所產生應用程式的使用者資料(NDB Cluster 使用 AnyValue 來儲存伺服器 ID)。

    當從 server_id 中提取有效的伺服器 ID 以用於偵測複製迴圈等目的時,伺服器會忽略剩餘的位元。當決定是否應根據伺服器 ID 忽略事件時,I/O 和 SQL 執行緒會使用 server_id_bits 變數來遮罩掉 server_id 的任何不相關位元。

    只要 server_id_bits 變數設定為 32(預設值),就可以透過 mysqlbinlog 從二進位日誌中讀取此資料。

    如果 server_id 的值大於或等於 2 的 server_id_bits 次方;否則,mysqld 會拒絕啟動。

    此系統變數僅受 NDB Cluster 支援。標準 MySQL 8.4 Server 不支援它。

  • slave_allow_batching

    命令列格式 --slave-allow-batching[={OFF|ON}]
    已過時
    系統變數 slave_allow_batching
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 ON

    replica_allow_batching 的已棄用同義詞。

  • transaction_allow_batching

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

    當設定為 1ON 時,此變數會啟用相同交易中陳述式的批次處理。若要使用此變數,必須先將 autocommit 設定為 0OFF 來停用它;否則,設定 transaction_allow_batching 不會產生任何效果。

    將它啟用可能會導致從「之前」的映像讀取,因此將此變數用於僅執行寫入的交易是安全的。您應確保在發出 SELECT 之前,任何擱置的交易都已認可(如果需要,可以使用明確的 COMMIT)。

    重要

    當給定陳述式的效果可能取決於相同交易中先前陳述式的結果時,不應使用 transaction_allow_batching

    此變數目前僅支援 NDB Cluster。

以下清單中的系統變數都與 ndbinfo 資訊資料庫有關。

  • ndbinfo_database

    系統變數 ndbinfo_database
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 字串
    預設值 ndbinfo

    顯示用於 NDB 資訊資料庫的名稱;預設值為 ndbinfo。這是一個唯讀變數,其值在編譯時決定。

  • ndbinfo_max_bytes

    命令列格式 --ndbinfo-max-bytes=#
    系統變數 ndbinfo_max_bytes
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 0
    最小值 0
    最大值 65535

    僅用於測試和偵錯。

  • ndbinfo_max_rows

    命令列格式 --ndbinfo-max-rows=#
    系統變數 ndbinfo_max_rows
    範圍 全域、工作階段
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 10
    最小值 1
    最大值 256

    僅用於測試和偵錯。

  • ndbinfo_offline

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

    ndbinfo 資料庫置於離線模式,在這種模式下,即使資料表和檢視不存在,或者它們存在但在 NDB 中具有不同的定義,也可以開啟它們。此類資料表(或檢視)不傳回任何資料列。

  • ndbinfo_show_hidden

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

    ON

    OFF

    是否在 mysql 用戶端中顯示 ndbinfo 資料庫的基礎內部資料表。預設值為 OFF

    注意

    當啟用 ndbinfo_show_hidden 時,內部資料表僅顯示在 ndbinfo 資料庫中;無論變數的設定為何,它們在 TABLES 或其他 INFORMATION_SCHEMA 資料表中都不可見。

  • ndbinfo_table_prefix

    系統變數 ndbinfo_table_prefix
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 字串
    預設值 ndb$

    用於命名 ndbinfo 資料庫基本資料表的前置詞(通常會隱藏,除非透過設定 ndbinfo_show_hidden 來公開)。這是一個唯讀變數,其預設值為 ndb$;前置詞本身在編譯時決定。

  • ndbinfo_version

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

    顯示正在使用的 ndbinfo 引擎版本;唯讀。

25.4.3.9.3 NDB Cluster 狀態變數

本節提供與 NDB Cluster 和 NDB 儲存引擎相關的 MySQL 伺服器狀態變數的詳細資訊。如需非特定於 NDB Cluster 的狀態變數,以及關於使用狀態變數的一般資訊,請參閱第 7.1.10 節,「伺服器狀態變數」