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