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