NDB 管理客户端的 NDB
管理客户端的 CLUSTERLOG STATISTICS
命令可以在其输出中提供许多有用的统计信息。提供有关集群状态信息的计数器由事务协调器 (TC) 和本地查询处理程序 (LQH) 每 5 秒更新一次,并写入集群日志。
事务协调器统计信息。每个事务都有一个事务协调器,它由以下方法之一选择
以循环方式
通过通信距离
通过在事务开始时提供数据放置提示
您可以使用 ndb_optimized_node_selection
系统变量确定从给定 SQL 节点启动的事务使用哪种 TC 选择方法。
同一个事务内的所有操作都使用同一个事务协调器,它报告以下统计信息
Trans count。这是在最后一个间隔内使用此 TC 作为事务协调器启动的事务数。这些事务中的任何一个都可能已提交、已中止或在报告间隔结束时仍处于未提交状态。
注意事务不会在 TC 之间迁移。
Commit count。这是在最后一个报告间隔内使用此 TC 作为事务协调器提交的事务数。由于本报告间隔内提交的一些事务可能是在上一个报告间隔内开始的,因此
Commit count
可能大于Trans count
。Read count。这是在最后一个报告间隔内使用此 TC 作为事务协调器启动的主键读取操作数,包括简单读取。此计数还包括作为唯一索引操作的一部分执行的读取。唯一索引读取操作会生成 2 个主键读取操作——1 个用于隐藏的唯一索引表,1 个用于读取发生的表。
Simple read count。这是在最后一个报告间隔内使用此 TC 作为事务协调器启动的简单读取操作数。
Write count。这是在最后一个报告间隔内使用此 TC 作为事务协调器启动的主键写入操作数。这包括所有插入、更新、写入和删除操作,以及作为唯一索引操作的一部分执行的写入。
注意唯一索引更新操作可能会在索引表和基础表上生成多个 PK 读取和写入操作。
AttrInfoCount。这是在最后一个报告间隔内为使用此 TC 作为事务协调器的主键操作接收的 32 位数据字数。对于读取,这与请求的列数成正比。对于插入和更新,这与写入的列数及其数据大小成正比。对于删除操作,这通常为零。
唯一索引操作会生成多个 PK 操作,因此会增加此计数。但是,发送到描述 PK 操作本身以及发送的键信息的 data words 不计入此处。用于描述要读取的列以进行扫描或用于描述 ScanFilters 的属性信息也不计入
AttrInfoCount
。并发操作。这是在最后一个报告间隔内使用此 TC 作为事务协调器启动但未完成的主键或扫描操作数。操作在启动时递增此计数器,在完成时递减此计数器;这在事务提交后发生。脏读和脏写——以及失败的操作——会递减此计数器。
Concurrent Operations
可以具有的最大值为 TC 块可以支持的操作的最大数量;目前,这是(2 * MaxNoOfConcurrentOperations) + 16 + MaxNoOfConcurrentTransactions
。(有关这些配置参数的更多信息,请参阅 第 25.4.3.6 节,“定义 NDB Cluster 数据节点” 的“事务参数”部分。)Abort count。这是在最后一个报告间隔内使用此 TC 作为事务协调器中止的事务数。由于在最后一个报告间隔内中止的一些事务可能是在上一个报告间隔内开始的,因此
Abort count
有时可能大于Trans count
。Scans。这是在最后一个报告间隔内使用此 TC 作为事务协调器启动的表扫描数。这并不包括范围扫描(即,有序索引扫描)。
范围扫描。这是在最后一个报告间隔内使用此 TC 作为事务协调器启动的有序索引扫描数。
本地读取。这是使用事务协调器在也持有记录的主片段副本的节点上执行的主键读取操作数。此计数也可以从
ndbinfo.counters
表中的LOCAL_READS
计数器获取。本地写入。它包含使用事务协调器在也持有记录的主片段副本的节点上执行的主键读取操作数。此计数也可以从
ndbinfo.counters
表中的LOCAL_WRITES
计数器获取。
本地查询处理程序统计信息(操作)。每个本地查询处理程序块(即,每个数据节点进程)都有 1 个集群事件。操作记录在数据所在的 LQH 中。
单个事务可能会对存储在多个 LQH 块中的数据进行操作。
Operations
统计信息提供此 LQH 块在最后一个报告间隔内执行的本地操作数,包括所有类型的读取和写入操作(插入、更新、写入和删除操作)。这还包括用于复制写入的操作。例如,在具有两个片段副本的集群中,对主片段副本的写入记录在主 LQH 中,对备份的写入记录在备份 LQH 中。唯一键操作可能会导致多个本地操作;但是,这 不包括作为表扫描或有序索引扫描结果生成的本地操作,这些操作不计入。
进程调度程序统计信息。 除了事务协调器和本地查询处理程序报告的统计信息外,每个 ndbd 进程都有一个调度程序,它还提供与 NDB Cluster 性能相关的有用指标。此调度程序在无限循环中运行;在每个循环中,调度程序执行以下任务
将来自套接字的任何传入消息读入作业缓冲区。
检查是否有要执行的任何定时消息;如果有,将它们也放入作业缓冲区。
执行(在循环中)作业缓冲区中的任何消息。
发送执行作业缓冲区中的消息时生成的任何分布式消息。
等待任何新的传入消息。
进程调度程序统计信息包括以下内容
平均循环计数器。这是在上述列表中第三步执行的循环数。随着 TCP/IP 缓冲区利用率的提高,此统计信息的大小会增加。您可以使用它来监控添加新的数据节点进程时性能的变化。
平均发送大小和平均接收大小。这些统计信息使您能够分别衡量节点之间写入和读取的效率。这些值以字节为单位给出。值越高,每字节发送或接收的成本越低;最大值为 64K。
要使所有集群日志统计信息都被记录,您可以在 NDB
管理客户端中使用以下命令
ndb_mgm> ALL CLUSTERLOG STATISTICS=15
将 STATISTICS
的阈值设置为 15 会导致集群日志变得非常冗长,并且大小会随着集群节点数量和 NDB Cluster 中的活动量而迅速增长。
有关与日志记录和报告相关的 NDB Cluster 管理客户端命令的更多信息,请参阅 第 25.6.3.1 节,“NDB Cluster 日志管理命令”。