25.6.3.3 NDB 集群管理客户端中的 CLUSTERLOG STATISTICS
NDB 管理客户端的 NDB
命令可以在其输出中提供多个有用的统计信息。由事务协调器(TC)和本地查询处理器(LQH)每5秒更新的计数器,写入到集群日志中。
事务协调器统计信息. 每个事务都有一个事务协调器,这个事务协调器由以下方法之一选择:
-
循环轮询
-
根据通信近邻性
-
在事务启动时提供数据 placement 提示
您可以使用 ndb_optimized_node_selection
系统变量来确定从给定的 SQL 节点启动的事务使用的事务协调器选择方法。
同一个事务中的所有操作都使用相同的事务协调器,该事务协调器报告以下统计信息:
-
Trans count. 这是最近一个时间间隔内使用该 TC 作为事务协调器的交易数量。这些交易可能已经提交、已被中止或仍未提交到报告间隔结束时。
Note事务不迁移到其他事务协调器。
-
提交计数. 这是使用该TC作为事务协调器的交易在最后一个报告间隔中提交的数量。由于某些交易可能在前一个报告间隔中启动,然后在当前报告间隔中提交,因此
Commit count
可能大于Trans count
. -
读取计数. 这是使用该TC作为事务协调器的主键读操作在最后一个报告间隔中启动的数量,包括简单读取。这也包括在唯一索引操作中执行的读取。唯一索引读取操作将生成2个主键读取操作—one for the hidden unique index table, and one for the table on which the read takes place.
-
简单读取计数. 这是使用该TC作为事务协调器的简单读取操作在最后一个报告间隔中启动的数量。
-
写入计数. 这是使用该TC作为事务协调器的主键写操作在最后一个报告间隔中启动的数量。这包括所有插入、更新、写入和删除操作,以及在唯一索引操作中执行的写入。
Note唯一索引更新操作可以生成多个PK读取和写入操作,以及索引表和基础表。
-
AttrInfoCount. 这是使用该TC作为事务协调器的最后一个报告间隔中收到的32位数据单词数量。对于读取,这与请求的列数相等。对于插入和更新,这与写入的列数和数据大小相等。对于删除操作,这通常为零。
唯一索引操作生成多个主键操作,从而增加该计数。然而,用于描述 PK 操作本身的数据单词,以及发送的关键信息,不被计入
AttrInfoCount
中。用于描述要读取的列或 ScanFilters 的属性信息,也不被计入AttrInfoCount
中。 -
并发操作 。这是使用该 TC 作为事务协调器的主键或扫描操作,在最后报告间隔内启动但未完成的数量。操作在启动时增加这个计数,在完成时减少;这发生在事务提交后。脏读和写,以及失败操作,均会减少这个计数。
Concurrent Operations
的最大值是 TC 块可以支持的操作数量当前为(2 * MaxNoOfConcurrentOperations) + 16 + MaxNoOfConcurrentTransactions
。(有关这些配置参数的更多信息,请参见第25.4.3.6节,“定义 NDB 集群数据节点”中的《事务参数》部分。) -
_abort_count 。这是使用该 TC 作为事务协调器的事务在最后报告间隔内被中止的数量。由于一些在最后报告间隔内被中止的事务可能是在前一个报告间隔内启动的,
Abort count
有时可以大于Trans count
。 -
扫描次数 在最后一个报告间隔内,以该事务协调器作为事务协调器启动的表扫描次数。这不包括范围扫描(即有序索引扫描)。
-
范围扫描次数 在最后一个报告间隔内,以该事务协调器作为事务协调器启动的有序索引扫描次数。
-
本地读取次数 使用事务协调器在记录的主键副本所在节点上执行的主键读操作次数。这也可以从
ndbinfo.counters
表中的LOCAL_READS
计数器中获取。 -
本地写入次数 使用事务协调器在记录的主键副本所在节点上执行的主键读操作次数。这也可以从
ndbinfo.counters
表中的LOCAL_WRITES
计数器中获取。
本地查询处理统计信息(操作) 每个本地查询处理块(即数据节点进程)都有1个集群事件。操作记录在LQH中,其中数据位于该LQH中。
单个事务可能会对多个LQH块中的数据进行操作。
该Operations
统计信息提供了本地 LQH 块在最后一个报告间隔内执行的本地操作数量,包括所有类型的读写操作(插入、更新、写入和删除操作)。这还包括用于复制写入的操作。例如,在具有两个碎片副本的集群中,对于主碎片副本的写入将在主 LQH 中记录,而对于备份的写入将在备份 LQH 中记录。唯一键操作可能会导致多个本地操作;然而,这不包括由于表扫描或有序索引扫描而生成的本地操作,这些操作不被计数。
进程调度统计信息. 除了事务协调器和本地查询处理器报告的统计信息外,每个ndbd进程都有一个调度器,该调度器还提供了有助于评估 NDB 集群性能的有用指标。该调度器在无限循环中运行;在每个循环中,调度器执行以下任务:
-
从套接字读取任何 incoming 消息,并将其放入作业缓冲区。
-
检查是否有任何定时消息需要执行;如果是,则将这些消息也放入作业缓冲区中。
-
执行(循环)作业缓冲区中的消息。
-
发送由执行作业缓冲区中的消息生成的分布式消息。
-
等待新的 incoming 消息。
进程调度统计信息包括以下内容:
-
平均循环计数器. 这是第三步从前一列表的循环执行次数。这统计信息随着 TCP/IP 缓冲区利用率的提高而增加。你可以使用这个来监控性能变化,因为你添加新的数据节点进程。
-
平均发送大小和平均接收大小. 这些统计信息使您能够评估节点之间的写入和读取效率。值以字节为单位。较高的值表示每字节发送或接收的成本更低;最大值为 64K。
要将所有集群日志统计信息记录到日志中,可以在 NDB
管理客户端中使用以下命令:
ndb_mgm> ALL CLUSTERLOG STATISTICS=15
将 STATISTICS
的阈值设置为 15,可以使集群日志变得非常详细,并且随着集群节点数量和 NDB 集群活动的增加而快速增长。
关于 NDB 集群管理客户端命令、日志记录和报告的更多信息,请见 第 25.6.3.1 节,“NDB 集群日志管理命令”。