25.4.3.9 NDB 集群适用于 MySQL 服务器选项和变量
本节提供了关于 NDB 集群专门的 MySQL 服务器选项、服务器和状态变量的信息。对于一般使用这些选项和变量的信息,以及其他不特定于 NDB 集群的选项和变量,请见第7.1节,“MySQL 服务器”。
对于在集群配置文件(通常名为config.ini
)中使用的 NDB 集群配置参数,请见第25.4节,“NDB 集群配置”。
本节提供了关于mysqld 服务器选项,相关于 NDB 集群。对于不特定于 NDB 集群的mysqld选项,以及关于使用选项与mysqld的一般信息,请见第7.1.7节,“Server Command Options”。
对于与其他 NDB 集群进程一起使用的命令行选项,请见第25.5节,“NDB 集群程序”。
-
Command-Line Format --ndbcluster[=值]
Disabled by skip-ndbcluster
Type 枚举 Default Value ON
Valid Values OFF
FORCE
NDBCLUSTER存储引擎是使用 NDB 集群所必需的。如果 mysqld 二进制文件包含对 NDBCLUSTER存储引擎的支持,该引擎默认处于禁用状态。使用
--ndbcluster
选项来启用它。使用--skip-ndbcluster
选项来明确地禁用引擎。如果同时使用
--initialize
,则--ndbcluster
选项将被忽略(NDB存储引擎将不会启用)。(使用这两个选项同时是没有必要的,也不建议这样做。) -
--ndb-allow-copying-alter-table=[ON|OFF]
Command-Line Format --ndb-allow-copying-alter-table[={OFF|ON}]
System Variable ndb_allow_copying_alter_table
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
让
ALTER TABLE
和其他DDL语句在NDB
表中使用复制操作。将其设置为OFF
可以避免这种情况发生,从而可能改善关键应用程序的性能。 -
--ndb-applier-allow-skip-epoch
Command-Line Format --ndb-applier-allow-skip-epoch
System Variable ndb_applier_allow_skip_epoch
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 在使用
--replica-skip-errors
时,使用该选项可以使NDB
忽略跳过的epoch事务。单独使用无效。 -
Command-Line Format --ndb-batch-size
System Variable ndb_batch_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 32768
Minimum Value 0
Maximum Value 2147483648
Unit 字节 这将设置用于 NDB 事务批处理的大小,以字节为单位。
-
--ndb-cluster-connection-pool=
#
Command-Line Format --ndb-cluster-connection-pool
System Variable ndb_cluster_connection_pool
System Variable ndb_cluster_connection_pool
Scope 全局 Scope 全局 Dynamic 否 Dynamic 否 SET_VAR
Hint Applies否 SET_VAR
Hint Applies否 Type 整数 Default Value 1
Minimum Value 1
Maximum Value 63
将这个选项设置为大于 1 的值(默认值),可以使 mysqld 进程使用多个连接到集群,实际上模拟了几个 SQL 节点。每个连接都需要在集群配置文件(
config.ini
)中有自己的[api]
或[mysqld]
部分,并且计入集群支持的最大 API 连接数。假设您有 2 个集群主机计算机,每个计算机上运行一个 SQL 节点,该节点的 mysqld 进程使用了
--ndb-cluster-connection-pool=4
选项;这意味着集群必须有 8 个 API 握手口可用以支持这些连接(而不是 2)。所有这些连接在 SQL 节点连接到集群时被设置,并且按顺序分配给线程。在运行mysqld时,这个选项只有在主机机器上拥有多个CPU、多核或两者时才有用。为了获得最佳结果,值应该小于主机机器上的总核心数。如果将其设置为大于这个值,将会严重地降低性能。
Important由于每个使用连接池的SQL节点占用多个API节点槽位,每个槽位都有自己的节点ID在集群中—you mustnot将节点ID作为集群连接字符串的一部分,在启动任何使用连接池的mysqld进程时。
在使用
--ndb-cluster-connection-pool
选项时,将节点ID作为连接字符串的一部分设置,会导致SQL节点尝试连接集群时的节点ID分配错误。 -
--ndb-cluster-connection-pool-nodeids=
list
Command-Line Format --ndb-cluster-connection-pool-nodeids
System Variable ndb_cluster_connection_pool_nodeids
Scope Global Dynamic No SET_VAR
Hint AppliesNo Type Set Default Value 指定用于SQL节点连接集群的节点ID列表。该列表中的节点数必须与
--ndb-cluster-connection-pool
选项设置的值相同。 -
--ndb-blob-read-batch-bytes=
bytes
Command-Line Format --ndb-blob-read-batch-bytes
System Variable ndb_blob_read_batch_bytes
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 65536
Minimum Value 0
Maximum Value 4294967295
该选项可以用于设置 NDB 集群应用程序中的
BLOB
数据读取批处理的大小(以字节为单位)。当当前事务中要读取的BLOB
数据量超过该批处理大小时,任何挂起的BLOB
读取操作将立即执行。该选项的最大值为 4294967295;默认值为 65536。将其设置为 0 将禁用
BLOB
读取批处理。Note在 NDB API 应用程序中,您可以使用
BLOB
写批处理控制器setMaxPendingBlobReadBytes()
和getMaxPendingBlobReadBytes()
方法。 -
--ndb-blob-write-batch-bytes=
bytes
Command-Line Format --ndb-blob-write-batch-bytes
System Variable ndb_blob_write_batch_bytes
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type Integer Default Value 65536
Minimum Value 0
Maximum Value 4294967295
Unit bytes 该选项可以用来设置 NDB 集群应用程序中的
BLOB
数据写批处理的大小(以字节为单位)。当当前事务中BLOB
数据量超过该批处理大小时,任何挂起的BLOB
写操作将立即执行。该选项的最大值为 4294967295;默认值为 65536。将其设置为 0 将禁用
BLOB
写批处理。Note在 NDB API 应用程序中,您可以使用
setMaxPendingBlobWriteBytes()
和getMaxPendingBlobWriteBytes()
方法控制BLOB
写批处理。 -
--ndb-connectstring=
connection_string
Command-Line Format --ndb-connectstring
Type 字符串 在使用
NDBCLUSTER
存储引擎时,这个选项指定管理服务器,该服务器分布集群配置数据。请参阅第 25.4.3.3 节,“NDB Cluster Connection Strings”,了解语法。 -
--ndb-default-column-format=[FIXED|DYNAMIC]
Command-Line Format --ndb-default-column-format={FIXED|DYNAMIC}
System Variable ndb_default_column_format
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value FIXED
Valid Values FIXED
DYNAMIC
设置新表的默认
COLUMN_FORMAT
和ROW_FORMAT
(见第15.1.20节,“CREATE TABLE 语句”)。默认值为FIXED
。 -
--ndb-deferred-constraints=[0|1]
Command-Line Format --ndb-deferred-constraints
System Variable ndb_deferred_constraints
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 1
控制是否在提交时间延迟唯一索引的约束检查,支持这种检查时。
0
是默认值。这选项通常不需要用于NDB集群或NDB集群复制的操作,并且主要用于测试。
-
Command-Line Format --ndb-schema-dist-timeout=#
System Variable ndb_schema_dist_timeout
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 120
Minimum Value 5
Maximum Value 1200
Unit 秒 指定mysqld在等待架构操作完成前等待的最大时间,以秒为单位,然后将其标记为超时。
-
--ndb-distribution=[KEYHASH|LINHASH]
Command-Line Format --ndb-distribution={KEYHASH|LINHASH}
System Variable ndb_distribution
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value KEYHASH
Valid Values LINHASH
KEYHASH
控制NDB表的默认分布方法。可以设置为KEYHASH(键哈希)或LINHASH(线性哈希)。KEYHASH是默认值。
-
Command-Line Format --ndb-log-apply-status[={OFF|ON}]
System Variable ndb_log_apply_status
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
使得副本mysqld将从其直接源服务器接收的任何更新记录到自己的二进制日志中,使用自己的服务器ID,而不是源服务器的ID。在环形或链式复制设置中,这允许这些更新 propagate 到当前mysqld的副本服务器配置为 replicas 的所有MySQL服务器的
mysql.ndb_apply_status
表中。在链式复制设置中,使用该选项允许下游(副本)集群了解它们相对于所有上游贡献者(源服务器)的位置。
在环形复制设置中,这个选项使得
ndb_apply_status
表中的更改完成整个循环,最后将变化传播回起始的NDB集群。这也允许一个集群作为 replication 源服务器看到它的变化(epochs)已经被应用到其他集群中。这个选项在没有使用
--ndbcluster
启动 MySQL 服务器时无效。 -
--ndb-log-empty-epochs=[ON|OFF]
Command-Line Format --ndb-log-empty-epochs[={OFF|ON}]
System Variable ndb_log_empty_epochs
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
在启用
log_replica_updates
的情况下,导致没有变化的epochs被写入到ndb_apply_status
和ndb_binlog_index
表中。默认情况下,这个选项是禁用的。禁用
--ndb-log-empty-epochs
将导致没有变化的epoch事务不被写入到二进制日志中,但是仍然会在ndb_binlog_index
表中写入一个空行。由于
--ndb-log-empty-epochs=1
将导致ndb_binlog_index
表的大小独立于二进制日志的大小增长,用户需要准备好管理这个表的增长,即使他们期望集群在大部分时间内处于空闲状态。 -
--ndb-log-empty-update=[ON|OFF]
Command-Line Format --ndb-log-empty-update[={OFF|ON}]
System Variable ndb_log_empty_update
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
使得没有产生变化的更新操作被写入到
ndb_apply_status
和ndb_binlog_index
表中,即使log_replica_updates
已经启用。默认情况下,这个选项是禁用的 (
OFF
)。禁用--ndb-log-empty-update
将导致没有变化的更新操作不被写入到二进制日志中。 -
--ndb-log-exclusive-reads=[0|1]
Command-Line Format --ndb-log-exclusive-reads[={OFF|ON}]
System Variable ndb_log_exclusive_reads
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value 0
使用这个选项启动服务器时,将使得主键读取操作被记录为独占锁,这样可以在 NDB 集群复制中检测和解决读取冲突。您也可以在运行时通过设置
ndb_log_exclusive_reads
系统变量的值为 1 或 0 分别启用或禁用这些锁定。0(禁用锁定)是默认值。更多信息,请见读取冲突检测和解决。
-
Command-Line Format --ndb-日志失败终止
System Variable ndb_日志失败终止
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value FALSE
当指定此选项时,如果无法完整地记录所有找到行事件,mysqld 进程将被终止。
-
Command-Line Format --ndb-日志原点[={OFF|ON}]
System Variable ndb_日志原点
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
将原始服务器 ID 和 epoch 记录到
ndb_日志索引
表中。Note这样可以使得一个给定的 epoch 在
ndb_日志索引
中有多行,一行对应每个原始 epoch。更多信息,请见第 25.7.4 节,“NDB 集群复制架构和表”。
-
Command-Line Format --ndb-日志事务依赖={true|false}
System Variable ndb_日志事务依赖
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value false
使 NDB 二进制日志线程为每个事务计算依赖关系。默认值是
FALSE
。这个选项不能在运行时设置;对应的
ndb_log_transaction_dependency
系统变量是只读的。 -
Command-Line Format --ndb-log-transaction-id[={OFF|ON}]
System Variable ndb_log_transaction_id
Scope Global Dynamic No SET_VAR
Hint AppliesNo Type Boolean Default Value OFF
使副本 mysqld 将 NDB 事务 ID 写入每行二进制日志。默认值是
FALSE
。--ndb-log-transaction-id
是启用 NDB 集群复制冲突检测和解决使用NDB$EPOCH_TRANS()
函数的必要条件(见NDB$EPOCH_TRANS())。更多信息,请参阅第 25.7.12 节,“NDB 集群复制冲突解决”。 -
Command-Line Format --ndb-log-update-as-write[={OFF|ON}]
System Variable ndb_log_update_as_write
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
是否将源服务器上的更新写入到二进制日志中,以便于
OFF
(作为更新)或ON
(作为写操作)。当启用此选项时,如果同时禁用--ndb-log-updated-only
和--ndb-log-update-minimal
,则不同类型的操作将被记录,如下所述:-
INSERT
: 记录为WRITE_ROW
事件,无前像;所有列的后像将被记录。UPDATE
: 记录为WRITE_ROW
事件,无前像;所有列的后像将被记录。DELETE
: 记录为DELETE_ROW
事件,所有列在前像中被记录;后像不被记录。
此选项可以与前面提到的其他两个NDB日志选项结合使用,以解决NDB复制冲突问题;请参阅ndb_replication Table,了解更多信息。
-
-
Command-Line Format --ndb-log-updated-only[={OFF|ON}]
System Variable ndb_log_updated_only
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value 是
是否将mysqld 写入到二进制日志中(
是
)或完整的行(否
)。当启用此选项时,如果同时禁用--ndb-log-update-as-write
和--ndb-log-update-minimal
,则不同类型的操作将被记录,如下列表所示:-
INSERT
:以WRITE_ROW
事件记录,且无前像;后像将记录所有列。 -
UPDATE
:以UPDATE_ROW
事件记录,且包含主键列和更新列的前后像。 -
DELETE
:以DELETE_ROW
事件记录,且包含主键列的前像;后像不被记录。
此选项可以与其他两个 NDB 记录选项结合使用,以解决 NDB 复制冲突问题;见ndb_replication 表,了解这些选项如何相互作用。
-
-
Command-Line Format --ndb-log-update-minimal[={OFF|ON}]
System Variable ndb_log_update_minimal
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
以最小的方式记录更新日志,仅写入主键值在before图像中,并且只记录更改的列在after图像中。这可能会导致与其他存储引擎(除了
NDB
)复制时的兼容性问题。启用该选项时,如果同时禁用--ndb-log-updated-only
和--ndb-log-update-as-write
,则不同类型的操作将被记录,如下所述:-
INSERT
:以WRITE_ROW
事件记录,无before图像;after图像中所有列都被记录。 -
UPDATE
:以UPDATE_ROW
事件记录,primary key列在before图像中;except primary key列在after图像中记录所有列。 -
DELETE
:以DELETE_ROW
事件记录,在before图像中记录所有列;after图像不被记录。
该选项可以与前面提到的其他两个NDB日志选项结合使用,以解决NDB复制冲突问题;见ndb_Replication Table,了解更多信息。
-
-
--ndb-mgm-tls=[relaxed|strict]
Command-Line Format --ndb-mgm-tls=[strict|relaxed]
System Variable ndb_mgm_tls
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 枚举 Default Value relaxed
Valid Values relaxed
strict
设置 NDB 集群 TLS 连接所需的 TLS 支持级别;值可以是
relaxed
或strict
。relaxed
表示尝试建立 TLS 连接,但不需要成功;strict
表示需要 TLS 连接才能连接。默认值为relaxed
。 -
Command-Line Format --ndb-mgmd-host=host_name[:port_num]
Type 字符串 Default Value localhost:1186
可以用来设置单个管理服务器的主机和端口号,以便程序连接到该服务器。如果程序需要节点 ID 或多个管理服务器(或 both)的连接信息,请使用
--ndb-connectstring
选项。 -
Command-Line Format --ndb-nodeid=#
Status Variable Ndb_cluster_node_id
Scope 全局 Dynamic 否 Type 整数 Default Value N/A
Minimum Value 1
Maximum Value 255
Maximum Value 63
在 NDB 集群中设置 MySQL 服务器的节点 ID。
--ndb-nodeid
选项将覆盖使用--ndb-connectstring
设置的节点 ID,无论这两个选项的顺序如何。此外,如果使用
--ndb-nodeid
,那么在config.ini
文件中的 [mysqld] 或 [api] 部分中必须找到匹配的节点 ID,或者文件中必须存在一个没有指定NodeId或Id参数的[mysqld]或[api]部分。这同样适用于将节点 ID 作为连接字符串的一部分。无论节点 ID 是如何确定的,它都将显示为全局状态变量
Ndb_cluster_node_id
的值,在SHOW STATUS
语句的输出中,以及作为connection
行中的cluster_node_id
值,在SHOW ENGINE NDBCLUSTER STATUS
语句的输出中。关于 NDB 集群 SQL 节点的节点 ID 的更多信息,请见第 25.4.3.7 节,“定义 NDB 集群中的 SQL 和其他 API 节点”。
-
Command-Line Format --ndbinfo[=value]
Type 枚举 Default Value ON
Valid Values ON
OFF
FORCE
启用
ndbinfo
信息数据库。默认情况下,这将在NDBCLUSTER
启用时自动启用。 -
Command-Line Format --ndb-optimization-delay=#
System Variable ndb_optimization_delay
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 10
Minimum Value 0
Maximum Value 100000
Unit 毫秒 设置在
OPTIMIZE TABLE
语句中等待行集的毫秒数,适用于NDB
表。默认值为10。 -
--ndb-optimized-node-selection
Command-Line Format --ndb-optimized-node-selection
启用事务节点选择优化。默认启用,可以使用
--skip-ndb-optimized-node-selection
来禁用。 -
Command-Line Format --ndb-tls-search-path=path
System Variable ndb_tls_search_path
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 路径名称 Default Value (Unix) $HOME/ tls
Default Value (Windows) $HOMEDIR/tls
用于 NDB TLS 连接的 CA 和私钥搜索目录列表。Unix 平台上使用逗号分隔,Windows 上使用分号分隔。
-
--ndb-transid-mysql-connection-map=
state
Command-Line Format --ndb-transid-mysql-connection-map[=state]
Type 枚举 Default Value ON
Valid Values ON
OFF
FORCE
启用或禁用处理
ndb_transid_mysql_connection_map
表在INFORMATION_SCHEMA
数据库中的插件。接受值ON
、OFF
或FORCE
。ON
(默认)启用插件。OFF
禁用插件,使ndb_transid_mysql_connection_map
不可访问。FORCE
防止MySQL Server启动,如果插件无法加载和启动。您可以通过检查
SHOW PLUGINS
的输出来查看ndb_transid_mysql_connection_map
插件是否正在运行。 -
Command-Line Format --ndb-wait-connected=#
System Variable ndb_wait_connected
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 120
Default Value 30
Minimum Value 0
Maximum Value 31536000
Unit 秒 该选项设置 MySQL 服务器等待 NDB 集群管理和数据节点连接建立的时间,单位为秒。默认值为
30
。 -
Command-Line Format --ndb-wait-setup=#
System Variable ndb_wait_setup
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 120
Default Value 30
Default Value 15
Default Value 15
Minimum Value 0
Maximum Value 31536000
Unit 秒 该变量显示 MySQL 服务器等待 NDB 存储引擎完成设置的时间,单位为秒。默认值为
30
。 -
Command-Line Format --skip-ndbcluster
禁用
NDBCLUSTER
存储引擎。这是默认的选项,用于在构建时支持NDBCLUSTER
存储引擎的二进制文件;服务器仅分配内存和其他资源用于该存储引擎,如果明确指定了--ndbcluster
选项。请参阅第25.4.1节,“快速测试NDB集群设置”,了解示例。
本节提供了关于 MySQL 服务器系统变量的详细信息,这些变量是特定于 NDB 集群和NDB
存储引擎的。关于非 NDB 集群系统变量,请参阅第7.1.8节,“服务器系统变量”。关于使用系统变量的总体信息,请参阅第7.1.9节,“使用系统变量”。
-
Command-Line Format --ndb-autoincrement-prefetch-sz=#
System Variable ndb_autoincrement_prefetch_sz
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 512
Minimum Value 1
Maximum Value 65536
确定自增列中的空隙概率。将其设置为
1
以最小化此问题。将其设置为高值以优化使插入速度更快,但降低批量插入时连续自增数字的可能性。该变量仅影响语句之间获取的
AUTO_INCREMENT
ID 数量;在给定语句中,至少32个ID将被同时获取。Important该变量不影响使用
INSERT ... SELECT
进行的插入操作。 -
Command-Line Format --ndb-clear-apply-status[={OFF|ON}]
System Variable ndb_clear_apply_status
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
默认情况下,执行
RESET REPLICA
将导致 NDB 集群副本清除其ndb_apply_status
表中的所有行。您可以通过设置ndb_clear_apply_status=OFF
来禁用此功能。 -
Command-Line Format --ndb-conflict-role=value
System Variable ndb_conflict_role
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value NONE
Valid Values NONE
PRIMARY
SECONDARY
PASS
确定 SQL 节点 (和 NDB 集群) 在圆形 (“主动-主动”) 复制设置中的角色。
ndb_conflict_role
可以取值为PRIMARY
、SECONDARY
、PASS
或NULL
(默认)。复制 SQL 线程必须停止才能更改ndb_conflict_role
。此外,在直接更改PASS
到PRIMARY
或SECONDARY
时,需要确保 SQL 线程停止,然后执行SET @@GLOBAL.ndb_conflict_role = 'NONE'
。这个变量取代了弃用的
ndb_slave_conflict_role
。更多信息,请见第 25.7.12 节,“NDB 集群复制冲突解决”。
-
Command-Line Format --ndb-data-node-neighbour=#
System Variable ndb_data_node_neighbour
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 255
设置一个“最近”数据节点的ID—that is, a preferred nonlocal data node is chosen to execute the transaction, rather than one running on the same host as the SQL or API node。这曾用于确保当完全复制表被访问时,我们访问该数据节点,以确保在可能的情况下总是使用本地副本表的副本。这也可以用来为事务提供提示。
这可以在物理上更近的节点上提高数据访问速度,从而具有更高的网络吞吐量。
请参阅第15.1.20.12节,“设置 NDB 注释选项”,了解更多信息。
NoteNDB API 应用程序中提供了等效方法
set_data_node_neighbour()
。 -
Command-Line Format --ndb-dbg-check-shares=#
System Variable ndb_dbg_check_shares
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type Integer Default Value 0
Minimum Value 0
Maximum Value 1
设置为1时,检查没有遗留的共享。仅在调试版本中可用。
-
Command-Line Format --ndb-default-column-format={FIXED|DYNAMIC}
System Variable ndb_default_column_format
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value FIXED
Valid Values FIXED
DYNAMIC
设置新的表的默认
COLUMN_ FORMAT
和ROW_ FORMAT
(见第15.1.20节,“CREATE TABLE 语句”)。默认值为FIXED
。 -
Command-Line Format --ndb-deferred-constraints=#
System Variable ndb_deferred_constraints
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 1
控制是否延迟约束检查,支持这些约束。
0
是默认值。这个变量通常不需要在 NDB 集群或 NDB 复制中进行操作,是主要用于测试的。
-
Command-Line Format --ndb-distribution={KEYHASH|LINHASH}
System Variable ndb_distribution
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value KEYHASH
Valid Values LINHASH
KEYHASH
控制 NDB 表的默认分布方法,可以设置为 KEYHASH(键哈希)或 LINHASH(线性哈希)。KEYHASH 是默认值。
-
Command-Line Format --ndb-eventbuffer-free-percent=#
System Variable ndb_eventbuffer_free_percent
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 20
Minimum Value 1
Maximum Value 99
设置事件缓冲区(ndb_ eventbuffer_max_alloc)中可用内存的百分比,达到最大值后再次开始缓冲。
-
Command-Line Format --ndb-eventbuffer-max-alloc=#
System Variable ndb_eventbuffer_max_alloc
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 9223372036854775807
设置 NDB API 可以分配的事件缓冲区内存的最大值(以字节为单位)。0 表示没有限制,且是默认值。
-
Command-Line Format ndb_extra_logging=#
System Variable ndb_extra_logging
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1
Minimum Value 0
Maximum Value 1
该变量使 MySQL 错误日志记录特定于
NDB
存储引擎的信息。当该变量设置为 0 时,MySQL 错误日志中记录的关于
NDB
的信息仅限于事务处理。如果设置为大于 0 但小于 10 的值,NDB
表架构和连接事件也将被记录,以及冲突解决是否在使用中,以及其他NDB
错误和信息。如果值设置为 10 或更高,NDB
内部信息,也将被记录,如数据分布在集群节点中的进度等。默认值为 1。 -
Command-Line Format --ndb-force-send[={OFF|ON}]
System Variable ndb_force_send
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
强制将缓冲区发送到
NDB
,而不等待其他线程。默认值为ON
。 -
Command-Line Format --ndb-fully-replicated[={OFF|ON}]
System Variable ndb_fully_replicated
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
确定是否对新创建的
NDB
表进行完全复制。这设置可以在单个表中使用COMMENT="NDB_ TABLE=FULLY_REPLICATED=..."
在CREATE TABLE
或ALTER TABLE
语句中覆盖;见第15.1.20.12节,“设置 NDB 注释选项”,了解语法和其他信息。 -
Command-Line Format --ndb-index-stat-enable[={OFF|ON}]
System Variable ndb_index_stat_enable
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
在查询优化中使用
NDB
索引统计信息。默认情况下是ON
。索引统计表总是在服务器启动时创建的,无论这个选项的值是什么。
-
Command-Line Format --ndb-index-stat-option=value
System Variable ndb_index_stat_option
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value 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
指定,不能使用h
、m
或s
指定。整数值可以使用K
、M
或G
作为后缀。以下表格显示了使用该变量设置的选项名称。表格还提供了选项的简要描述、默认值和(适用时)最小和最大值的信息。
表25.19:ndb_index_stat_option选项和值
Name Description Default/Units Minimum/Maximum loop_enable
1000 ms 0/4G loop_idle
空闲时的睡眠时间 1000 ms 0/4G loop_busy
有更多工作等待时的睡眠时间 100 ms 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 m 1/4G delete_batch
8 0/4G clean_delay
1 m 0/4G error_batch
4 1/4G error_delay
1 m 1/4G evict_batch
8 1/4G evict_delay
从读取时间清除LRU缓存 1 m 0/4G cache_limit
本地存储引擎用于缓存索引统计信息的最大内存大小(以字节为单位),由mysqld使用;当超过该限制时,清理缓存。 32M 0/4G cache_lowpct
90 0/100 zero_total
将其设置为 1 将在 ndb_ index_stat_status
中的所有累积计数器重置为 0。此选项值也将在执行该操作时重置为 0。0 0/1 -
System Variable ndb_join_pushdown
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
该变量控制是否将
NDB
表的连接推送到NDB内核(数据节点)。之前,连接使用多个访问NDB
的SQL节点来处理;然而,当ndb_join_pushdown
启用时,推送连接将完整地发送到数据节点,然后在多个数据副本上并行执行,并返回单个合并结果给mysqld。这可以大大减少处理这种连接所需的SQL节点和数据节点之间的回合数。默认情况下,
ndb_join_pushdown
启用。NDB 推送连接条件 为了使连接推送,连接必须满足以下条件:
-
只能比较列,并且要连接的所有列都必须使用完全相同的数据类型。这意味着(例如)不能将
INT
列和BIGINT
列推送下降。来自同一表的列之间的表达式也可以被推下。这些列(或对这些列执行的任何操作结果)必须具有完全相同的类型,包括同样的有符号性、长度、字符集和排序规则、精度和比例,其中适用。
-
明确锁定不受支持;然而,
NDB
存储引擎的隐式行锁定特性仍然被强制执行。这意味着使用
FOR UPDATE
的连接不能被推下。 -
为了使连接能够被推下,子表在连接中必须使用
ref
、eq_ ref
、或const
访问方法之一,或者这些方法的组合。外连接子表只能使用
eq_ ref
进行推下。如果推送连接的根是
eq_ ref
或const
,那么只能将由eq_ ref
连接的子表追加。 (一个由ref
连接的表可能会成为另一个推送连接的根。)如果查询优化器决定使用
Using join cache
对候选子表,那么该表不能被推送为子表。但是,它可能会成为另一个推送表的根。 -
引用了通过
[LINEAR] HASH
、LIST
或RANGE
分区的表当前不能被推送下。
您可以通过使用
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)
Note如果内连接的子表是由
ref
连接的,并且结果是根据排序索引进行了排序或分组,这个索引不能提供排序行,这将强制写入一个排序临时文件。关于推送连接性能的两个额外信息来源可用:
-
-
Command-Line Format --ndb-log-apply-status[={OFF|ON}]
System Variable ndb_log_apply_status
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
只读变量,显示服务器是否使用
--ndb-log-apply-status
选项启动的。 -
Command-Line Format --ndb-log-bin[={OFF|ON}]
System Variable ndb_log_bin
Scope 全局、会话 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
使NDB表的更新写入到二进制日志中。该变量的设置对服务器没有影响,如果服务器未启用二进制日志记录使用
log_bin
。ndb_log_bin
默认为0(FALSE)。 -
Command-Line Format --ndb-log-binlog-index[={OFF|ON}]
System Variable ndb_log_binlog_index
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
将epochs映射到二进制日志中的位置插入到
ndb_binlog_index
表中。设置这个变量无效,如果服务器未启用二进制日志记录使用log_bin
。此外,ndb_log_bin
不能被禁用。ndb_log_binlog_index
默认为1
(ON
),通常在生产环境中不需要更改这个值。 -
Command-Line Format --ndb-log-empty-epochs[={OFF|ON}]
System Variable ndb_log_empty_epochs
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value OFF
当这个变量设置为0时,epoch事务中没有变化的记录将不会被写入到二进制日志中,但是仍然会写入一个空epoch到
ndb_binlog_index
表中。 -
Command-Line Format --ndb-log-empty-update[={OFF|ON}]
System Variable ndb_log_empty_update
Scope Global Dynamic Yes SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
当该变量设置为
ON
(1
)时,更新事务无变化将被写入到二进制日志中,即使log_replica_updates
启用了。 -
Command-Line Format --ndb-log-exclusive-reads[={OFF|ON}]
System Variable ndb_log_exclusive_reads
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value 0
该变量确定是否将主键读取操作记录为独占锁,这样可以在 NDB 集群复制中检测和解决读取冲突。要启用这些锁,设置
ndb_log_exclusive_reads
的值为 1。0 是默认值,它禁用了这种锁定。更多信息,请见读取冲突检测和解决。
-
Command-Line Format --ndb-log-orig[={OFF|ON}]
System Variable ndb_log_orig
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
显示是否将源服务器ID和纪元记录在
ndb_-binlog_index
表中。使用--ndb-log-orig
服务器选项设置。 -
System Variable ndb_log_transaction_id
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
这个只读的布尔系统变量显示是否在二进制日志中记录NDB事务ID(用于使用“active-active”NDB集群复制和
NDB$EPOCH_TRANS()
冲突检测)。要更改设置,请使用--ndb-log-transaction-id
选项。ndb_log_transaction_id
在mainline MySQL Server 8.4中不受支持。更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”。
-
ndb_log_transaction_compression
Command-Line Format --ndb-log-transaction-compression
System Variable ndb_log_transaction_compression
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否在二进制日志中写入压缩的事务;只有当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 表的二进制日志事务压缩,使用 mysql 或其他客户端会话在启动mysqld后设置
ndb_log_transaction_compression
系统变量为OFF
。在启动后设置
binlog_transaction_compression
变量对ndb_log_transaction_compression
的值无效。关于二进制日志事务压缩的更多信息,例如哪些事件被或不被压缩,以及使用该特性时需要注意的行为变化,请见第7.4.4.5节,“二进制日志事务压缩”。
-
ndb_log_transaction_compression_level_zstd
Command-Line Format --ndb-log-transaction-compression-level-zstd=#
System Variable ndb_log_transaction_compression_level_zstd
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 3
Minimum Value 1
Maximum Value 22
如果启用了
ndb_log_transaction_compression
,则用于写入压缩事务到副本的二进制日志的ZSTD
压缩级别。未支持在没有编译支持mysqld的NDB
存储引擎的情况下。请参阅第7.4.4.5节,“二进制日志事务压缩”,了解更多信息。
-
Command-Line Format --ndb-metadata-check[={OFF|ON}]
System Variable ndb_ metadata_check
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
NDB
使用背景线程每ndb_ metadata_check_interval
秒检查元数据变化与MySQL数据字典的比较。这条元数据变化检测线程可以通过设置ndb_ metadata_check
到OFF
来禁用。线程默认启用。 -
Command-Line Format --ndb-metadata-check-interval=#
System Variable ndb_metadata_check_interval
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 60
Minimum Value 0
Maximum Value 31536000
Unit 秒 NDB
在后台运行一个元数据变化检测线程,以确定 NDB 字典相对于 MySQL 数据字典的变化。默认情况下,检查间隔为 60 秒,可以通过设置ndb_metadata_check_interval
的值来调整。要启用或禁用线程,请使用ndb_metadata_check
。 -
System Variable ndb_metadata_sync
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value false
设置该变量将导致更改监控线程覆盖对
ndb_metadata_check
或ndb_metadata_check_interval
的值,并进入连续更改检测期限。当线程确定没有更多需要检测的更改时,它将等待二进制日志线程完成所有检测对象的同步。然后,ndb_metadata_sync
被设置为false
ndb_metadata_check
和ndb_metadata_check_interval
确定的行为。将该变量设置为
true
将清除排除对象列表;将其设置为false
将清除要重试的对象列表。 -
Command-Line Format --ndb-optimized-node-selection=#
System Variable ndb_optimized_node_selection
Scope 全局
Dynamic 否
SET_VAR
Hint Applies否
Type 整数
Default Value 3
Minimum Value 0
Maximum Value 3
有两种优化节点选择形式,以下描述:
-
SQL节点使用promixity确定事务协调器,即选择与 SQL 节点最近的数据节点为事务协调器。为了这个目的,拥有与 SQL 节点共享内存连接的数据节点被认为是与 SQL 节点最近的;紧接着的是:从本地主机建立的 TCP 连接,然后是来自其他主机的 TCP 连接。
-
SQL线程使用distribution awareness选择数据节点。也就是说,访问事务中的第一个语句所在的集群分区的数据节点将被用作整个事务的协调器(仅当事务中的第一个语句不超过访问一个集群分区时有效)。
这个选项可以设置为整数值
0
、1
、2
或3
。3
是默认值。这些值对节点选择的影响如下:-
0
:节点选择不被优化。每个数据节点将作为事务协调器使用 8 次,然后 SQL 线程才会转移到下一个数据节点。 -
1
:根据距离 SQL 节点来确定事务协调器。 -
2
:使用分布式 awareness 选择事务协调器。但是,如果事务中的第一个语句访问超过一个集群分区,SQL 节点将回退到当这个选项设置为0
时所见的轮询行为。 -
3
: 如果可以使用分布式 awareness 确定事务协调器,则使用它;否则,使用近似选择事务协调器。 (这是默认行为。)
近似是根据以下方式确定的:
-
从
Group
参数设置的值开始(默认为55)。 -
对于与其他 API 节点共享同一主机的 API 节点,减少该值1。假设
Group
的默认值,为数据节点在同一主机上的有效值为54,对于远程数据节点为55。 -
设置
ndb_data_node_neighbour
将进一步减少Group
的有效值50,使得该节点被视为最近的节点。这只在所有数据节点都在 API 节点主机以外时,且希望 dedication 一个数据节点给 API 节点时需要。在正常情况下,之前描述的默认调整已经足够。
频繁地更改
ndb_data_node_neighbour
不是建议的,因为这将改变集群连接状态,从而可能会中断新事务选择算法对每个线程的稳定化过程。 -
-
Command-Line Format --ndb-read-backup[={OFF|ON}]
System Variable ndb_read_backup
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
启用从任何副本fragment读取任何创建的
NDB
表,以提高表读性能,且对写操作的影响相对较小。如果 SQL 节点和数据节点使用相同的主机名或 IP 地址,这个事实将自动检测,从而优先将读取发送到同一主机。如果这些节点位于同一主机但使用不同的 IP 地址,可以在 SQL 节点上设置
ndb_data_node_neighbour
的值,以指示正确的数据节点。要为单个表启用或禁用从任何副本fragment读取,可以在
CREATE TABLE
或ALTER TABLE
语句中设置NDB_TABLE
选项READ_BACKUP
,以获取更多信息,请参见第15.1.20.12节,“设置 NDB 注释选项”。 -
ndb_recv_thread_activation_threshold
Command-Line Format --ndb-recv-thread-activation-threshold=#
System Variable ndb_recv_thread_activation_threshold
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8
Minimum Value 0(MIN_ACTIVATION_THRESHOLD)
Maximum Value 16(MAX_ACTIVATION_THRESHOLD)
当活动线程达到这个数量时,接收线程将负责对集群连接的轮询。
这个变量的作用域是全局的,可以在启动时设置。
-
Command-Line Format --ndb-recv-thread-cpu-mask=mask
System Variable ndb_recv_thread_cpu_mask
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 位图 Default Value [empty]
锁定接收线程到特定的CPU的掩码。这个掩码是以十六进制形式指定的。例如,
0x33
表示每个接收线程使用一个CPU。空字符串是默认值;将ndb_recv_thread_cpu_mask
设置为该值将移除之前设置的任何接收线程锁定。这个变量的作用域是全局的,可以在启动时设置。
-
ndb_report_thresh_binlog_epoch_slip
Command-Line Format --ndb-report-thresh-binlog-epoch-slip=#
System Variable ndb_report_thresh_binlog_epoch_slip
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 10
Minimum Value 0
Maximum Value 256
这个变量表示事件缓冲区中完全缓冲但尚未被binlog injector线程消费的epochs数量阈值。当这个程度的滞后(lag)超过时,会报告事件缓冲区状态信息,并将
BUFFERED_EPOCHS_OVER_THRESHOLD
作为原因(见第25.6.2.3节,“事件缓冲区报告在集群日志”)。滞后增加时,epoch从数据节点接收并完全缓冲在事件缓冲区中;减少时,epoch被binlog injector线程消费,减少。空epochs缓冲和队列,并且只有在使用Ndb::setEventBufferQueueEmptyEpoch()
方法从NDB API时才包括在计算中。 -
ndb_report_thresh_binlog_mem_usage
Command-Line Format --ndb-report-thresh-binlog-mem-usage=#
System Variable ndb_report_thresh_binlog_mem_usage
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 10
Minimum Value 0
Maximum Value 10
这是一个在报告二进制日志状态之前的可用内存百分比阈值。例如,值为
10
(默认值)意味着,如果数据节点从数据节点接收二进制日志数据时可用的内存量低于10%,将发送状态信息到集群日志。 -
System Variable ndb_row_checksum
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1
Minimum Value 0
Maximum Value 1
传统上,
NDB
创建表时使用行校验和,这可以检测硬件问题,但会影响性能。将ndb_row_checksum
设置为 0 表示对新或已更改的表不使用行校验和,这对所有类型查询都有很大的影响。这是一个默认设置为 1 的变量,以提供向后兼容性。 -
ndb_schema_dist_lock_wait_timeout
Command-Line Format --ndb-schema-dist-lock-wait-timeout=value
System Variable ndb_schema_dist_lock_wait_timeout
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 30
Minimum Value 0
Maximum Value 1200
Unit 秒 在每个 SQL 节点上对元数据锁的等待时间,以便将其本地数据字典更新以反映 DDL 语句更改。等待时间过后,将返回警告,指出某个 SQL 节点的数据字典未被更新以反映更改。这可以避免二进制日志线程在处理架构操作时等待过长时间。
-
Command-Line Format --ndb-schema-dist-timeout=value
System Variable ndb_schema_dist_timeout
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 120
Minimum Value 5
Maximum Value 1200
Unit 秒 在架构分布中等待的时间,以检测超时。这可能表明其他 SQL 节点正在经历过高活动,或者它们正在被某些方式阻止获取必要资源。
-
ndb_schema_dist_upgrade_allowed
Command-Line Format --ndb-schema-dist-upgrade-allowed=value
System Variable ndb_schema_dist_upgrade_allowed
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value true
允许在连接到
NDB
时升级schema分布表。当为真(默认)时,这个更改将被延迟,直到所有SQL节点都已升级到同一个版本的NDB集群软件。Note升级完成后,schema分布的性能可能会受到一些影响。
-
ndb_show_foreign_key_mock_tables
Command-Line Format --ndb-show-foreign-key-mock-tables[={OFF|ON}]
System Variable ndb_show_foreign_key_mock_tables
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
显示
NDB
使用的模拟表,以支持foreign_key_checks=0
。当启用时,创建和删除表时将显示额外警告。可以在SHOW CREATE TABLE
的输出中看到表的实际名称(内部名称)。 -
Command-Line Format --ndb-slave-conflict-role=value
Deprecated 是 System Variable ndb_slave_conflict_role
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value NONE
Valid Values NONE
PRIMARY
SECONDARY
PASS
已弃用的
ndb_conflict_role
的同义词。 -
System Variable ndb_table_no_logging
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
当该变量设置为
ON
或1
时,它将导致使用ENGINE NDB
创建或修改的所有表都成为非日志记录表,即使没有数据更改写入redo日志或磁盘检查点,就像使用NOLOGGING
选项创建或修改CREATE TABLE
或ALTER TABLE
语句一样。关于非日志记录的
NDB
表的更多信息,请参见NDB_TABLE Options。ndb_table_no_logging
对NDB
表架构文件的创建没有影响;要抑制这些文件,请使用ndb_table_temporary
代替。 -
当设置为
ON
或1
时,这个变量会导致NDB
表不写入磁盘:这意味着不会创建表架构文件,也不会记录表。Note当前设置这个变量没有任何效果。这是一个已知的问题;请参阅Bug #34036。
-
System Variable ndb_使用复制ALTER TABLE
Scope 全局、会话 Dynamic 否 SET_VAR
Hint Applies否 在
NDB
出现在线ALTER TABLE
操作问题时,强制使用复制表的方式。默认值为OFF
。 -
System Variable ndb_use_exact_count
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
强制
NDB
在执行SELECT COUNT(*)查询时使用记录数,以加速这种类型的查询。默认值为OFF
,这使得查询速度更快。 -
Command-Line Format --ndb-use-transactions[={OFF|ON}]
System Variable ndb_use_transactions
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
您可以通过将该变量的值设置为
OFF
来禁用NDB
事务支持。这通常不推荐,但是在某些情况下可能有用,例如在导入大型事务的dump文件时,可以在客户端会话中禁用事务支持;这样可以将多行插入分成多个部分执行,而不是作为单个事务执行。在这种情况下,一旦导入完成,您应该么将变量值设置为ON
,或者简单地终止会话。 -
System Variable ndb_version
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value NDB
引擎版本,作为一个复合整数。 -
System Variable ndb_version_string
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value NDB
引擎版本,以ndb-
格式表示。x.y.z
-
Command-Line Format --replica-allow-batch[={OFF|ON}]
System Variable replica_allow_batching
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
NDB 集群副本是否启用批量更新。
允许在副本上启用批量更新可以大大提高性能,特别是在复制
TEXT
、BLOB
和JSON
列时。因此,replica_allow_batching
默认启用。设置这个变量只有在使用 NDB 存储引擎进行复制时才生效;在 MySQL 8.4 中,它存在但无效。更多信息,请见第25.7.6节,“Starting NDB Cluster Replication (Single Replication Channel)”。
-
Command-Line Format --ndb-replica-batch-size=#
System Variable ndb_replica_batch_size
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 2097152
Minimum Value 0
Maximum Value 2147483648
Unit 字节 确定复制应用线程使用的批处理大小(以字节为单位)。将这个变量设置为 replication 中的值,而不是
--ndb-batch-size
选项,以便在 replica 中应用该设置,排除其他会话。如果这个变量未设置(默认值为 2 MB),那么它的实际值将是
--ndb-batch-size
的值和 2 MB 的较大者。 -
ndb_replica_blob_write_batch_bytes
Command-Line Format --ndb-replica-blob-write-batch-bytes=#
System Variable ndb_replica_blob_write_batch_bytes
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 2097152
Minimum Value 0
Maximum Value 2147483648
Unit 字节 控制复制应用线程对 blob 数据的批处理写入大小。
可以使用这个变量,而不是
--ndb-blob-write-batch-bytes
选项来控制复制服务器上的blob批量写入大小,排除其他会话。原因是,当ndb_replica_blob_write_batch_bytes
未设置时,有效的blob批量大小(即 blob 列的最大 pending 字节数)由--ndb-blob-write-batch-bytes
和 2 MB(默认值为ndb_replica_blob_write_batch_bytes
)之间的较大值确定。将
ndb_replica_blob_write_batch_bytes
设置为 0 表示 NDB 在复制服务器上不对 blob 批量写入大小施加限制。 -
Command-Line Format --server-id-bits=#
System Variable server_ id_ bits
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 32
Minimum Value 7
Maximum Value 32
该变量表示实际识别服务器的最低有效位数,位于32位
server_id
中。将服务器实际识别为少于32位,使得剩余位可以用于其他目的,如在NDB API的Event API中存储应用程序生成的用户数据,使用OperationOptions
结构中的AnyValue存储服务器ID(NDB集群使用AnyValue存储服务器ID)。在从
server_id
中提取实际服务器ID以便检测复制循环时,服务器忽略剩余位。变量server_id_bits
用于在I/O和SQL线程中根据服务器ID决定是否忽略事件。该数据可以通过mysqlbinlog从二进制日志中读取,假设它是使用自己的
server_id_bits
变量设置为32(默认值)。如果
server_id
的值大于或等于2的幂次server_id_bits
;否则,mysqld将拒绝启动。这个系统变量仅支持NDB集群。它不支持标准MySQL 8.4 Server。
-
Command-Line Format --slave-allow-batching[={OFF|ON}]
Deprecated 是 System Variable slave_allow_batching
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
已弃用的同义词,等同于
replica_allow_batching
。 -
System Variable transaction_allow_batching
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
当设置为
1
或ON
时,这个变量启用同一事务中的语句批处理。要使用这个变量,需要先将autocommit
设置为0
或OFF
;否则,设置transaction_allow_batching
无效。使用这个变量与只写事务是安全的,因为启用它可能会从“before”图像中读取。你应该确保任何挂起的事务已经提交(使用明确的
COMMIT
语句,如果需要)然后再执行SELECT
语句。Importanttransaction_allow_batching
在同一事务中可能会出现前一个语句的结果对后一个语句的影响时,不应该使用。当前,这个变量仅支持NDB集群。
以下列表中的系统变量都与ndbinfo
信息数据库相关。
-
显示用于NDB信息数据库的名称;默认为
ndbinfo
。这是一个只读变量,其值在编译时确定。 -
Command-Line Format --ndbinfo-max-bytes=#
System Variable ndbinfo_max_bytes
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 65535
仅供测试和调试使用。
-
Command-Line Format --ndbinfo-max-rows=#
System Variable ndbinfo_max_rows
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 10
Minimum Value 1
Maximum Value 256
仅供测试和调试使用。
-
System Variable ndbinfo_offline
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
将
ndbinfo
数据库置于离线模式中,即使表和视图不存在或存在但定义不同于NDB
,仍然可以打开它们。从这些表(或视图)中不返回任何行。 -
Command-Line Format --ndbinfo-show-hidden[={OFF|ON}]
System Variable ndbinfo_show_hidden
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
Valid Values ON
OFF
是否在
ndbinfo
数据库的内部表中显示mysql客户端。默认值为OFF
。Note当
ndbinfo_ show_hidden
启用时,内部表只在ndbinfo
数据库中显示,不可见于TABLES
或其他INFORMATION_SCHEMA
表中,无论变量的设置是什么。 -
System Variable ndbinfo_table_prefix
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value ndb$
用于命名
ndbinfo
数据库的基本表(通常隐藏,除非通过设置ndbinfo_ show_hidden
暴露)。这是一个只读变量,默认值为ndb$
;前缀本身是在编译时确定的。 -
System Variable ndbinfo_版本
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value 显示正在使用的
ndbinfo
引擎的版本号;只读。
本节提供了MySQL服务器状态变量的详细信息,这些变量与NDB集群和NDB
存储引擎相关。对于不特定于NDB集群的状态变量,以及使用状态变量的一般信息,请见第7.1.10节,“服务器状态变量”。
-
MySQL服务器可以询问
NDBCLUSTER
存储引擎是否知道一个给定的表名。这称为发现。Handler_discover
表示使用该机制发现表的次数。 -
Ndb_api_adaptive_send_deferred_count
adaptive 发送调用次数,未实际发送的次数。
更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_deferred_count_session
adaptive 发送调用次数,未实际发送的次数。
更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_deferred_count_replica
该副本的 adaptive 发送调用次数,未实际发送的次数。
更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_deferred_count_slave
已弃用的同义词,等同于
Ndb_api_adaptive_send_deferred_count_replica
。 -
Ndb_api_adaptive_send_forced_count
该 MySQL 服务器(SQL 节点)发送的强制发送adaptive send 调用次数。
更多信息,请参见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_forced_count_session
该客户端会话发送的强制发送adaptive send 调用次数。
更多信息,请参见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_forced_count_replica
该副本发送的强制发送adaptive send 调用次数。
更多信息,请参见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_forced_count_slave
已弃用的同义词,等同于
Ndb_api_adaptive_send_forced_count_replica
。 -
Ndb_api_adaptive_send_unforced_count
该 MySQL 服务器(SQL 节点)发送的非强制性 adaptive 发送调用次数。
更多信息,请参见第 25.6.16 节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_unforced_count_session
该客户端会话中发送的非强制性 adaptive 发送调用次数。
更多信息,请参见第 25.6.16 节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_unforced_count_replica
该副本未强制发送的适应性发送调用次数。
更多信息,请参见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_adaptive_send_unforced_count_slave
已弃用的
Ndb_api_adaptive_send_unforced_count_replica
的同义词。 -
Ndb_api_bytes_sent_count_session
该客户端会话中发送到数据节点的数据量(以字节为单位)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端影响的mysqld。更多信息,请参见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_bytes_sent_count_replica
本复制节点向数据节点发送的数据量(以字节为单位)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为复制节点,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_bytes_sent_count_slave
已弃用的
Ndb_api_bytes_sent_count_replica
的同义词。 -
本 MySQL 服务器(SQL节点)向数据节点发送的数据量(以字节为单位)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_bytes_received_count_session
当前客户端会话从数据节点接收的数据量(以字节为单位)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它只与当前会话相关,且不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_bytes_received_count_replica
从数据节点接收的数据量(以字节为单位)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API 统计计数器和变量”。
-
Ndb_api_bytes_received_count_slave
已弃用的同义词,等同于
Ndb_api_bytes_received_count_replica
。 -
从数据节点接收的数据量(以字节为单位),是由这个 MySQL 服务器(SQL 节点)接收的。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_event_data_count_injector
NDB binlog injector线程接收的行变化事件数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
这个MySQL Server(SQL节点)接收的行变化事件数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_event_nondata_count_injector
NDB二进制日志注入线程接收的非行数据事件数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
这个MySQL Server(SQL节点)接收的非行数据事件数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_event_bytes_count_injector
NDB binlog injector线程接收的事件字节数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
这个MySQL Server(SQL节点)接收的事件字节数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”.
-
基于或使用主键的操作数,在当前客户端会话中。包括blob表操作、隐式解锁操作和自增操作,以及用户可见的主键操作。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”.
-
基于或使用主键的操作数,在这个副本中。包括blob表操作、隐式解锁操作和自增操作,以及用户可见的主键操作。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本或不使用 NDB 表,这个值总是为 0。 -
已弃用的同义词,等同于
Ndb_api_pk_op_count_replica
。 -
这个 MySQL 服务器(SQL 节点)基于或使用主键的操作次数。这包括对 blob 表的操作、隐式解锁操作、自增操作,以及用户可见的主键操作。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_pruned_scan_count_session
当前客户端会话中已被裁剪到单个分区的扫描次数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_pruned_scan_count_replica
这个副本已被裁剪到单个分区的扫描次数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本或不使用 NDB 表,这个值总是为 0。 -
Ndb_api_pruned_scan_count_slave
已弃用的同义词,等同于
Ndb_api_pruned_scan_count_replica
。 -
这个 MySQL 服务器(SQL 节点)执行的扫描次数,其中被 pruning 到单个分区。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_range_scan_count_session
当前客户端会话中启动的范围扫描次数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_range_scan_count_replica
这个副本启动的范围扫描次数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本或不使用 NDB 表,这个值总是为 0。 -
Ndb_api_range_scan_count_slave
已弃用的同义词,等同于
Ndb_api_range_scan_count_replica
。 -
这个 MySQL 服务器(SQL 节点)启动的范围扫描次数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_read_row_count_session
当前客户端会话中已读取的总行数。这包括任何主键、唯一键或扫描操作在当前客户端会话中所读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_read_row_count_replica
这个副本已读取的总行数。这包括任何主键、唯一键或扫描操作由这个副本所读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
已弃用的同义词,等同于
Ndb_api_read_row_count_replica
。 -
这个 MySQL 服务器(SQL 节点)读取的总行数。这包括任何主键、唯一键或扫描操作由这个 MySQL 服务器(SQL 节点)执行的所有行。
您应该注意,这个值可能不完全准确地反映
SELECT
COUNT(*)
查询读取的行数,因为在这种情况下,MySQL 服务器实际上读取的是伪行形式[
,并对每个碎片中的行数进行求和,以获取表中所有行的估算计数。table fragment ID
]:[number of rows in fragment
]Ndb_api_read_row_count
使用这个估算,而不是实际表中的行数。虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_scan_batch_count_session
客户端会话中接收的批次行数。1批次定义为来自单个碎片的扫描结果集。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_scan_batch_count_replica
该变量表示该副本接收的批处理行数。1个批处理定义为来自单个分片的扫描结果集。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上具有全局作用。如果该 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_scan_batch_count_slave
已弃用的同义词,等同于
Ndb_api_scan_batch_count_replica
。 -
该MySQL Server(SQL节点)接收的行批次数量。1批次定义为来自单个分片的扫描结果集。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见
Section 25.6.16, “NDB API Statistics Counters and Variables”
。 -
Ndb_api_table_scan_count_session
该客户端会话中启动的表扫描数量,包括内部表的扫描。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_table_scan_count_replica
这个副本启动的表扫描次数,包括内部表的扫描。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_table_scan_count_slave
已弃用的同义词,等同于
Ndb_api_table_scan_count_replica
。 -
该 MySQL 服务器(SQL 节点)启动的表扫描次数,包括内部表扫描。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_abort_count_session
该客户端会话中事务的 abort 数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_abort_count_replica
该副本中事务的数量,该事务被这个副本中止。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_abort_count_slave
已弃用的同义词,等同于
Ndb_api_trans_abort_count_replica
。 -
本 MySQL 服务器(SQL 节点)中事务的数量,该事务被本服务器所中止。
虽然该变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。更多信息,请见
Section 25.6.16, “NDB API Statistics Counters and Variables”
。 -
Ndb_api_trans_close_count_session
当前客户端会话中关闭的事务数量。这一值可能大于
Ndb_api_trans_commit_count_session
和Ndb_api_trans_abort_count_session
的总和,因为一些事务可能已经被回滚。虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_close_count_replica
该副本关闭的交易数。该值可能大于
Ndb_api_trans_commit_count_replica
和Ndb_api_trans_abort_count_replica
的总和,因为一些交易可能已经被回滚。虽然该变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。如果该MySQL服务器不作为副本,也不使用NDB表,这个值总是0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_close_count_slave
已弃用的
Ndb_api_trans_close_count_replica
的同义词。 -
MySQL 服务器关闭的事务数(SQL 节点)。该值可能大于
Ndb_api_trans_commit_count
和Ndb_api_trans_abort_count
的总和,因为一些事务可能已经被回滚。虽然该变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_commit_count_session
当前客户端会话中提交的事务数。
虽然该变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,且不受其他客户端对mysqld 的影响。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_trans_commit_count_replica
该副本所提交的事务数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是0。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_trans_commit_count_slave
已弃用的
Ndb_api_trans_commit_count_replica
的同义词。 -
该 MySQL 服务器(SQL节点)所提交的事务数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_local_read_row_count_session
当前客户端会话中已读取的总行数。这包括任何主键、唯一键或扫描操作在当前客户端会话中所读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_local_read_row_count_replica
该副本读取的总行数。这包括由该副本执行的任何主键、唯一键或扫描操作所读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_local_read_row_count_slave
-
Ndb_api_trans_local_read_row_count
MySQL 服务器 (SQL 节点) 已经读取的总行数。这包括由该 MySQL 服务器 (SQL 节点) 进行的任何主键、唯一键或扫描操作所读取的所有行。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_start_count_session
当前客户端会话中启动的事务数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对该mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_start_count_replica
该副本启动的事务数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_trans_start_count_slave
已弃用的
Ndb_api_trans_start_count_replica
的同义词。 -
该 MySQL 服务器(SQL 节点)启动的事务数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
基于或使用唯一键的操作数,在当前客户端会话中。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
进行读取,但它只与当前会话相关,且不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
根据唯一键进行或使用操作的数量。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API 统计计数器和变量”。
-
已弃用的唯一键操作计数器的同义词,等同于
Ndb_api_uk_op_count_replica
。 -
根据唯一键进行或使用操作的数量,这个 MySQL 服务器(SQL 节点)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_wait_exec_complete_count_session
当前会话中线程阻塞的次数,等待操作执行完成。包括所有
execute()
调用,以及隐式执行的blob和自动递增操作,不可见于客户端。虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API统计计数器和变量”。
-
Ndb_api_wait_exec_complete_count_replica
该线程在等待操作完成时被这个副本阻塞的次数。这包括所有
execute()
调用,以及隐式执行的blob和自动递增操作,不可见于客户端。虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_exec_complete_count_slave
已弃用的同义词,等同于
Ndb_api_wait_exec_complete_count_replica
。 -
Ndb_api_wait_exec_complete_count
该 MySQL 服务器(SQL 节点)中线程被阻塞的次数,以等待操作完成。这包括所有
execute()
调用,以及隐式执行的 blob 和自动递增操作,不可见于客户端。虽然该变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_meta_request_count_session
该客户端会话中线程被阻塞的次数,以等待基于元数据的信号,如DDL 请求、新纪元和事务记录的夺取。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_meta_request_count_replica
一个线程因等待该副本的元数据信号而被阻塞的次数,例如DDL请求、新纪元和事务记录的夺取。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_meta_request_count_slave
已弃用的同义词,等同于
Ndb_api_wait_meta_request_count_replica
。 -
Ndb_api_wait_meta_request_count
线程被 MySQL 服务器(SQL 节点)阻塞的次数,等待元数据信号,如DDL 请求、新的epochs 和事务记录的夺取。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_nanos_count_session
客户端会话中等待数据节点信号的总时间(以纳秒为单位)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_nanosecond_count_replica
该副本在等待来自数据节点的任何类型信号时总共花费的时间(以纳秒为单位)。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局作用域的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_nanosec_count_slave
已弃用的同义词,等同于
Ndb_api_wait_nanosec_count_replica
。 -
MySQL 服务器(SQL 节点)等待数据节点发送信号的总时间(以纳秒为单位)。
虽然该变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_scan_result_count_session
在当前客户端会话中,线程被阻塞的次数,以等待扫描结果信号,如等待扫描结果或等待扫描关闭。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它只与当前会话相关,不受其他客户端对mysqld的影响。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_scan_result_count_replica
一个线程在等待扫描结果或扫描关闭时被这个副本阻塞的次数。
虽然这个变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但是它实际上是全局范围的。如果这个 MySQL 服务器不作为副本,也不使用 NDB 表,这个值总是为 0。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
Ndb_api_wait_scan_result_count_slave
已弃用的同义词,等同于
Ndb_api_wait_scan_result_count_replica
。 -
Ndb_api_wait_scan_result_count
线程阻塞的次数,该 MySQL 服务器(SQL 节点)等待扫描信号时所发生的事件,例如在等待扫描结果或等待扫描关闭时。
虽然该变量可以使用
SHOW GLOBAL STATUS
或SHOW SESSION STATUS
读取,但它实际上是全局作用域的。更多信息,请见第25.6.16节,“NDB API Statistics Counters and Variables”。
-
如果服务器作为 NDB 集群节点运行,那么该变量的值是该节点在集群中的 ID。
如果服务器不属于 NDB 集群,那么该变量的值为 0。
-
如果服务器是 NDB 集群的一部分,该变量的值是从该集群管理服务器获取配置数据的主机名或 IP 地址。
如果服务器不是 NDB 集群的一部分,那么该变量的值是一个空字符串。
-
如果服务器是 NDB 集群的一部分,该变量的值是该服务器通过哪个端口连接到从该集群管理服务器获取配置数据的端口号。
如果服务器不是 NDB 集群的一部分,那么该变量的值是 0。
-
显示集群当前配置的生成号。这可以用作确定自该 SQL 节点最后连接到集群以来是否已经更改了集群配置的指标。
-
在 NDB 集群复制冲突解决中,这个变量显示自上次重启以来,使用
NDB$EPOCH()
冲突解决方法找到冲突行的数量,以便于 mysqld。更多信息,请见第 25.7.12 节,“ NDB 集群复制冲突解决”。
-
在 NDB 集群复制冲突解决中,这个变量显示自上次重启以来,使用
NDB$EPOCH_TRANS()
冲突解决方法找到冲突行的数量,以便于 mysqld。更多信息,请见第 25.7.12 节,“ NDB 集群复制冲突解决”。
-
显示使用
NDB$EPOCH2()
在 NDB 集群复制冲突解决中,自上次重启以来找到冲突行的数量,以便于指定为主服务器的源。更多信息,请见NDB$EPOCH2().
-
在 NDB 集群复制冲突解决中,这个变量显示使用NDB$EPOCH2_TRANS()冲突解决方法在给定的mysqld中找到冲突行的数量,自从上次重启以来。
更多信息,请见NDB$EPOCH2_TRANS().
-
在 NDB 集群复制冲突解决中,这个变量显示自从上次启动mysqld以来,因为““greatest timestamp wins””冲突解决方法而未能应用的行数。
更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”.
-
显示自从mysqld启动以来,当前SQL节点由于使用
NDB$MAX_DELETE_WIN()
进行NDB集群复制冲突解决而拒绝的行数。更多信息,请见第25.7.12节,“NDB集群复制冲突解决”。
-
Ndb_conflict_fn_max_del_win_ins
显示自从mysqld启动以来,当前SQL节点由于使用
NDB$MAX_DEL_WIN_INS()
进行NDB集群复制冲突解决而拒绝的插入行数。更多信息,请见第25.7.12节,“NDB集群复制冲突解决”。
-
在 NDB 集群复制冲突解决中,这个变量显示自上次启动 mysqld 以来,因为““greatest timestamp wins””冲突解决方法而未插入的行数。
更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”。
-
在 NDB 集群复制冲突解决中,这个变量显示自上次重启 mysqld 以来,因为““same timestamp wins””冲突解决方法而未应用的行数。
更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_last_conflict_epoch
在这个副本上最后一次检测到冲突的纪元。你可以将这个值与
Ndb_replica_max_replicated_epoch
进行比较;如果Ndb_replica_max_replicated_epoch
大于Ndb_conflict_last_conflict_epoch
请参阅第25.7.12节,“NDB Cluster Replication Conflict Resolution”,了解更多信息。
-
Ndb_conflict_reflected_op_discard_count
在使用 NDB Cluster Replication冲突解决时,这是由于执行错误而未被应用于次要副本的反射操作数量。
请参阅第25.7.12节,“NDB Cluster Replication Conflict Resolution”,了解更多信息。
-
Ndb_conflict_reflected_op_prepare_count
在使用 NDB Cluster Replication冲突解决时,这个状态变量包含了次要副本上准备执行的反射操作数量(即,已经定义好的操作)。
-
在使用 NDB 集群复制冲突解决时,这个变量给出了 secondary 上准备执行的刷新操作数量。
请参阅第25.7.12节,“NDB 集群复制冲突解决”,获取更多信息。
-
Ndb_conflict_last_stable_epoch
事务冲突函数找到冲突行的数量
请参阅第25.7.12节,“NDB 集群复制冲突解决”,获取更多信息。
-
Ndb_conflict_trans_row_conflict_count
在 NDB 集群复制冲突解决中,这个状态变量显示自上次重启以来,mysqld 中发现的直接冲突行数。
当前,NDB 集群中唯一支持的 transactional conflict 检测函数是 NDB$EPOCH_TRANS(),因此这个状态变量实际上与
Ndb_conflict_fn_epoch_trans
相同。更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_trans_row_reject_count
在 NDB 集群复制冲突解决中,这个状态变量显示由于被 transactional conflict 检测函数确定为冲突的行数总和。这包括不仅
Ndb_conflict_trans_row_conflict_count
,而且是或依赖于冲突事务中的所有行。更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_trans_reject_count
在 NDB 集群复制冲突解决中,这个状态变量显示了由事务性冲突检测函数找到的事务数量。
更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_trans_detect_iter_count
在 NDB 集群复制冲突解决中,这个显示了提交 epoch 事务所需的内部迭代次数。应该大于或等于
Ndb_conflict_trans_conflict_commit_count
。更多信息,请见第25.7.12节,“NDB 集群复制冲突解决”。
-
Ndb_conflict_trans_conflict_commit_count
在 NDB 集群复制冲突解决中,这个显示了需要事务性冲突处理的 epoch 事务数量。
更多信息,请见第25.7.12节,“NDB集群复制冲突解决”。
-
在使用delete-delete冲突检测时,这是删除操作应用的次数,但所指行不存在。
-
提供了对
NDB
内核的回合数。 -
最近由
NDB
提交的epochs。 -
最近由该
NDB
客户端提交的epochs。 -
自服务器最后启动以来,NDB 元数据更改检测线程发现的 MySQL 数据字典变化次数。
-
自该 SQL 节点最后重启以来,NDB binlog 线程在本地未能同步的元数据对象数量。
如果对象被排除,它将不会再被自动同步,直到用户手动更正不一致。可以通过使用类似于
SHOW CREATE TABLE
、table
SELECT * FROM
或任何其他触发表格发现的语句来更正不一致。table
-
自该 SQL 节点最后重启以来,同步的 NDB 元数据对象数量。
-
如果服务器是 NDB 集群的一部分,该变量的值是集群中的数据节点数量。
如果服务器不是 NDB 集群的一部分,那么该变量的值为 0。
-
分布式数据节点上由 NDB 内核处理的总连接数。
Note使用
EXPLAIN
测试的连接也会贡献到这个数字。 -
NDB 内核中推送下来的连接,但无法在那里处理的数量。
-
成功推送到
NDB
并在那里执行的连接数量。 -
NDB 内核中推送下来的连接返回到 mysqld 的行数。
-
该变量保存自 NDB 集群最后启动以来,
NDBCLUSTER
可以使用分区裁剪的扫描次数。使用该变量和
Ndb_scan_count
可以在 schema 设计中帮助最大化服务器对单个表分区进行扫描的能力,从而只涉及到单个数据节点的副本。 -
Ndb_replica_max_replicated_epoch
该副本上最近提交的 epoch。您可以将其与
Ndb_conflict_last_conflict_epoch
进行比较;如果Ndb_replica_max_replicated_epoch
是这两个值中的较大者,则尚未检测到冲突。更多信息,请见第 25.7.12 章“NDB 集群复制冲突解决”。
-
这个变量保存了自从 NDB 集群最后启动以来,
NDBCLUSTER
执行的总扫描次数。 -
Ndb_slave_max_replicated_epoch
已弃用的
Ndb_replica_max_replicated_epoch
的同义词。 -
如果该 MySQL 服务器连接到 NDB 集群,这个只读变量显示集群系统名称。否则,值为空字符串。
-
当前会话中使用提示的交易次数。与
Ndb_api_trans_start_count_session
比较,以获取 NDB 交易可以使用提示的比例。