在 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 操作本身的数据字以及发送的键信息不会在此处计算。发送到描述要读取的扫描列或描述 ScanFilters 的属性信息也不计入
AttrInfoCount
。Concurrent Operations。 这是在最后一段时间内使用此 TC 作为事务协调器启动但尚未完成的主键或扫描操作数量。操作在启动时递增此计数器,在完成时递减此计数器;这在事务提交后发生。脏读和脏写——以及失败的操作——都会递减此计数器。
的最大值为
Concurrent Operations
可以具有是 TC 块可以支持的操作的最大数量;目前,这是(2 * MaxNoOfConcurrentOperations) + 16 + MaxNoOfConcurrentTransactions
。 (有关这些配置参数的更多信息,请参阅 第 25.4.3.6 节,“定义 NDB Cluster 数据节点” 的事务参数部分。)Abort count。 这是在最后一段时间内使用此 TC 作为事务协调器中止的事务数量。由于在最后一段时间内中止的一些事务可能已在之前的报告间隔内启动,因此
Abort count
有时可能大于Trans count
。Scans。 这是在最后一段时间内使用此 TC 作为事务协调器启动的表扫描数量。这并不包括范围扫描(即,有序索引扫描)。
Range scans。 这是在最后一段时间内使用此 TC 作为事务协调器启动的有序索引扫描数量。
Local reads。 这是使用事务协调器在也保存记录的主片段副本的节点上执行的主键读取操作数量。此计数也可以从
ndbinfo.counters
表中的LOCAL_READS
计数器获取。Local writes。 这包含使用事务协调器在也保存记录的主片段副本的节点上执行的主键读取操作数量。此计数也可以从
ndbinfo.counters
表中的LOCAL_WRITES
计数器获取。
本地查询处理程序统计信息(操作)。 每个本地查询处理程序块(即,每个数据节点进程)都有 1 个集群事件。操作记录在存储其操作数据的 LQH 中。
单个事务可能对存储在多个 LQH 块中的数据进行操作。
的 Operations
统计信息提供了此 LQH 块在最后一段时间内执行的本地操作数量,包括所有类型的读取和写入操作(插入、更新、写入和删除操作)。这还包括用于复制写入的操作。例如,在具有两个片段副本的集群中,对主片段副本的写入记录在主 LQH 中,对备份的写入记录在备份 LQH 中。唯一键操作可能会导致多个本地操作;但是,这不包括作为表扫描或有序索引扫描的结果生成的本地操作,这些操作不会被计算在内。
进程调度程序统计信息。 除了事务协调器和本地查询处理程序报告的统计信息外,每个 ndbd 进程都有一个调度程序,它还提供与 NDB Cluster 的性能相关的有用指标。此调度程序在无限循环中运行;在每个循环中,调度程序执行以下任务
将来自套接字的任何传入消息读入作业缓冲区。
检查是否有任何定时消息要执行;如果有,也将这些消息放入作业缓冲区。
执行(在循环中)作业缓冲区中的任何消息。
发送由执行作业缓冲区中的消息生成的任何分布式消息。
等待任何新的传入消息。
进程调度程序统计信息包括以下内容
Mean Loop Counter。 这是在上述列表中的第三步执行的循环数量。随着 TCP/IP 缓冲区利用率的提高,此统计信息的大小会增加。可以使用它来监控随着添加新的数据节点进程而产生的性能变化。
Mean send size 和 Mean receive size。 这些统计信息使您能够分别衡量节点之间写入和读取的效率。值以字节为单位。较高的值意味着每字节发送或接收的成本更低;最大值为 64K。
要导致所有集群日志统计信息被记录,可以在 NDB
管理客户端中使用以下命令
ndb_mgm> ALL CLUSTERLOG STATISTICS=15
将 STATISTICS
的阈值设置为 15 会导致集群日志变得非常冗长,并且会以与集群节点数量和 NDB Cluster 中的活动量成正比的速度快速增长。
有关与日志记录和报告相关的 NDB Cluster 管理客户端命令的更多信息,请参阅 第 25.6.3.1 节,“NDB Cluster 日志管理命令”。