文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  NDB叢集的MySQL伺服器選項和變數

25.4.3.9 NDB叢集的MySQL伺服器選項和變數

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

對於叢集組態檔(通常名為 config.ini)中使用的NDB叢集組態參數,請參閱第 25.4 節,「NDB叢集的配置」

25.4.3.9.1 NDB叢集的MySQL伺服器選項

本節提供與 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 忽略已跳過的紀元交易。單獨使用時無效。

  • --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 作為叢集連線字串的一部分使用。

    當使用 --ndb-cluster-connection-pool 選項時,在連線字串中設定節點 ID 會在 SQL 節點嘗試連線到叢集時導致節點 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 Cluster 應用程式中 BLOB 資料寫入批次處理的大小 (以位元組為單位)。當目前交易中要寫入的 BLOB 資料量超過此批次大小時,任何擱置的 BLOB 寫入操作都會立即執行。

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

    注意

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

  • --ndb-connectstring=connection_string

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

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

  • --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 Cluster 或 NDB Cluster 複寫的操作,主要用於測試。

  • --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 Cluster。這也允許作為複寫來源的叢集查看其變更 (時間點) 何時已套用至圓圈中的其他叢集。

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

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

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

    即使啟用 log_replica_updates,也會導致在沒有變更時的時間點寫入到 ndb_apply_statusndb_binlog_index 資料表中。

    預設會停用此選項。停用 --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

    即使啟用 log_replica_updates,也會導致沒有產生變更的更新寫入到 ndb_apply_statusndb_binlog_index 資料表中。

    預設會停用此選項 (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 Cluster 複寫衝突偵測和解決方案。您也可以透過將 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

    將原始伺服器 ID 和時間點記錄在 ndb_binlog_index 資料表中。

    注意

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

    如需詳細資訊,請參閱 第 25.7.4 節「NDB Cluster 複寫綱要和資料表」

  • --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$EPOCH_TRANS() 函數啟用 NDB Cluster 複寫衝突偵測和解決方案時,需要 --ndb-log-transaction-id (請參閱 NDB$EPOCH_TRANS())。如需詳細資訊,請參閱 第 25.7.12 節「NDB Cluster 複寫衝突解決方案」

  • --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 事件,其中 before 映像包含主鍵欄位;除了主鍵欄位以外的**所有**欄位都記錄在 after 映像中。

    • DELETE:記錄為 DELETE_ROW 事件,其中 before 映像包含所有欄位;不記錄 after 映像。

    此選項可與先前提及的其他兩個 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=主機名稱[:埠號]
    類型 字串
    預設值 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
    單位 毫秒

    設定在 NDB 表格上執行 OPTIMIZE TABLE 陳述式時,在多組列之間等待的毫秒數。預設值為 10。

  • --ndb-optimized-node-selection

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

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

  • ndb-tls-search-path=path

    命令列格式 --ndb-tls-search-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=值
    系統變數 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 M 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 聯結, 結果是依已排序的索引排序或分組,則此索引無法提供已排序的資料列,這會強制寫入已排序的暫存檔。

    另外有兩種關於下推聯結效能的資訊來源可以使用

    1. 狀態變數 Ndb_pushed_queries_definedNdb_pushed_queries_droppedNdb_pushed_queries_executedNdb_pushed_reads

    2. 屬於 DBSPJ 核心區塊的 ndbinfo.counters 資料表中的計數器。

  • 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

    導致將 epoch 對應到二進位日誌中的位置插入到 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 時,沒有變更的 epoch 交易不會寫入二進位日誌,儘管即使對於 ndb_binlog_index 中的空 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 寫入二進位日誌(使用 active-active NDB Cluster 複寫與 NDB$EPOCH_TRANS() 衝突偵測所必需)。若要變更設定,請使用 --ndb-log-transaction-id 選項。

    在主線 MySQL Server 9.0 中不支援 ndb_log_transaction_id

    更多資訊,請參閱第 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 使用背景執行緒,將與 MySQL 資料字典比較的每個 ndb_metadata_check_interval 秒檢查中繼資料變更。可以透過將 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 執行緒使用分佈感知來選取資料節點。也就是說,將由給定交易的第一個陳述式存取的叢集分割區所包含的資料節點用作整個交易的交易協調器。(僅當交易的第一個陳述式存取不超過一個叢集分割區時,此方法才有效。)

    此選項採用整數值 0123 之一。3 是預設值。這些值會以下列方式影響節點選取

    • 0:未最佳化節點選取。每個資料節點在 SQL 執行緒繼續到下一個資料節點之前,會被用作交易協調器 8 次。

    • 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 時,滑動會減少。空 epoch 會緩衝和排隊,因此只有在使用來自 NDB API 的 Ndb::setEventBufferQueueEmptyEpoch() 方法啟用時,才會包含在此計算中。

  • 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
    單位

    在綱要分發期間等待數秒,以取得每個 SQL 節點上取得的中繼資料鎖定,以便變更其本機資料字典以反映 DDL 陳述式變更。經過此時間後,會傳回警告,指出指定 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 資料表不寫入磁碟:這表示不會建立任何資料表綱要檔案,並且不會記錄資料表。

    注意

    目前設定此變數無效。這是一個已知問題;請參閱 Bug #34036。

  • ndb_use_copying_alter_table

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

    當線上 ALTER TABLE 操作發生問題時,強制 NDB 使用複製資料表的方式。預設值為 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-x.y.zNDB 引擎版本。

  • replica_allow_batching

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

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

    允許複本上的批次更新可以大幅提高效能,尤其是在複製 TEXTBLOBJSON 欄位時。因此,預設會啟用 replica_allow_batching

    只有在使用 NDB 儲存引擎進行複寫時,設定此變數才會生效;在 MySQL Server 9.0 中,它會存在但不會執行任何動作。如需更多資訊,請參閱 Section 25.7.6, “Starting NDB Cluster Replication (Single Replication Channel)”

  • 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 個位元識別,可以讓其餘位元用於其他目的,例如儲存使用 NDB API 的 Event API 的應用程式所產生的使用者資料,在 OperationOptions 結構的 AnyValue 中 (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 9.0 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 狀態變數

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