21.5.3.3 在 NDB 群集 ManagementClient 端中使用 CLUSTERLOG STATISTICS

NDBManagementClient 端的CLUSTERLOG STATISTICS命令可以在其输出中提供许多有用的统计信息。事务协调器(TC)和本地查询处理程序(LQH)以 5 秒的报告间隔更新提供有关集群状态信息的计数器,并将其写入集群日志。

事务处理协调器统计信息. 每个事务都有一个事务处理协调器,可通过以下方法之一进行选择:

  • 以循环方式

  • 通过通讯接近

  • 通过在事务开始时提供数据放置提示

Note

您可以使用ndb_optimized_node_selection系统变量来确定从给定的 SQL 节点开始的事务使用哪种 TC 选择方法。

同一事务中的所有操作都使用同一事务协调器,该协调器报告以下统计信息:

  • Transaction 计数. 这是使用此 TC 作为 Transaction 协调器的最近一次间隔中开始的 Transaction 数量。在报告间隔结束时,这些事务中的任何一个都可能已提交,已中止或保持未提交状态。

Note

事务不会在 TC 之间迁移。

  • 提交计数. 这是在上一个报告间隔内使用此 TC 作为事务协调器进行的事务的数量。由于在此报告间隔中提交的某些事务可能已在先前的报告间隔中开始,因此Commit count可能大于Trans count

  • 读取计数. 这是在最后一个报告间隔内使用此 TC 作为事务协调器进行的主键读取操作的数量,包括简单读取。此计数还包括作为唯一索引操作一部分执行的读取。唯一索引读取操作会生成 2 个主键读取操作-1 个用于隐藏的唯一索引 table,而 1 个用于在其上进行读取的 table。

  • 简单读取计数. 这是在上一个报告间隔中使用此 TC 作为事务协调器进行的简单读取操作的数量。

  • 写入计数. 这是在上次报告时间间隔内使用此 TC 作为事务协调器进行的主键写入操作的数量。这包括所有插入,更新,写入和删除,以及作为唯一索引操作的一部分执行的写入。

Note

唯一索引更新操作可以在索引 table 和基 table 上生成多个 PK 读取和写入操作。

  • AttrInfoCount. 这是在最后一个报告间隔中使用此 TC 作为事务协调器进行主键操作时接收到的 32 位数据字的数量。对于读取,这与请求的列数成正比。对于插入和更新,这与写入的列数及其数据大小成正比。对于删除操作,通常为零。

唯一索引操作会生成多个 PK 操作,因此会增加此计数。但是,此处描述的 PK 本身发送的数据字以及所发送的密钥信息不计算在内。 AttrInfoCount中也不计算发送给描述要读取的列或描述 ScanFilter 的属性信息。

  • 并发操作. 这是使用该 TC 作为事务协调器的主键或扫描操作的数量,这些操作在上次报告时间间隔内已开始但尚未完成。当操作开始时,该计数器递增;完成时,该计数器递减。这在事务提交后发生。肮脏的读写操作以及失败的操作都会使此计数器递减。

Concurrent Operations可以具有的最大值是 TC 块可以支持的最大操作数。目前,这是(2 * MaxNoOfConcurrentOperations) + 16 + MaxNoOfConcurrentTransactions。 (有关这些配置参数的更多信息,请参见第 21.3.3.6 节,“定义 NDB 群集数据节点”的*“Transaction 参数” *。)

  • 中止计数. 这是在上次报告间隔期间使用此 TC 作为事务处理协调器的事务中止的数量。由于某些在上一个报告间隔中止的事务可能已经在上一个报告间隔中开始,因此Abort count有时可以大于Trans count

  • 扫描 。这是在上一个报告间隔内使用此 TC 作为事务处理协调器进行的 table 扫描的次数。这不包括范围扫描(即有序索引扫描)。

  • 范围扫描. 这是在上一个报告间隔内使用此 TC 作为事务协调器进行的有序索引扫描的次数。

  • 本地读取. 这是在还保存记录的主副本的节点上使用事务处理协调器执行的主键读取操作的数量。也可以从ndbinfo.counterstable 中的LOCAL_READS计数器获得此计数。

  • 本地写入. 这包含使用节点上的事务协调器执行的主键读取操作的数量,该节点还保存记录的主副本。也可以从ndbinfo.counterstable 中的LOCAL_WRITES计数器获得此计数。

本地查询处理程序统计信息(操作). 每个本地查询处理程序块有 1 个集群事件(即每个数据节点进程 1 个)。操作记录在 LQH 中,操作所基于的数据将驻留在该位置。

Note

单个事务可以对存储在多个 LQH 块中的数据进行操作。

Operations统计信息提供了该 LQH 块在最后报告间隔中执行的本地操作的数量,并包括所有类型的读取和写入操作(插入,更新,写入和删除操作)。这也包括用于复制写入的操作。例如,在 2 副本群集中,对主副本的写入记录在主 LQH 中,而对备份的写入将记录在备份 LQH 中。唯一键操作可能会导致多个本地操作;但是,这不包括由于 table 扫描或有序索引扫描而生成的本地操作,这些操作不计算在内。

进程调度程序统计信息. 除了事务协调器和本地查询处理程序报告的统计信息外,每个ndbd进程都有一个调度程序,该调度程序还提供了与 NDB 群集性能有关的有用 Metrics。此调度程序在无限循环中运行;在每个循环中,调度程序执行以下任务:

  • 将套接字中的所有传入消息读入作业缓冲区。

  • 检查是否有定时消息要执行;如果是这样,请将它们也放入作业缓冲区。

  • 执行(循环)作业缓冲区中的所有消息。

  • 发送通过在作业缓冲区中执行消息而生成的所有分布式消息。

  • await 任何新的传入消息。

流程调度程序统计信息包括:

  • 平均循环计数器. 这是前一列 table 中第三步执行的循环数。随着 TCP/IP 缓冲区利用率的提高,此统计信息的大小也会增加。您可以在添加新的数据节点进程时使用它来监视性能的变化。

  • 平均发送大小和平均接收大小. 这些统计信息使您能够评估节点之间的写入和读取效率。值以字节为单位。较高的值 table 示发送或接收的每字节成本较低;最大值为 64K。

要记录所有群集日志统计信息,可以在NDBManagementClient 端中使用以下命令:

ndb_mgm> ALL CLUSTERLOG STATISTICS=15

Note

STATISTICS的阈值设置为 15 会导致群集日志变得非常冗长,并且大小会迅速增长,与群集节点的数量和 NDB 群集中的活动量成正比。

有关与日志记录和报告有关的 NDB Cluster ManagementClient 端命令的更多信息,请参见第 21.5.3.1 节“ NDB 群集日志记录 Management 命令”