该 operations_per_fragment 表提供了关于单个碎片和碎片副本上的操作信息,以及这些操作的一些结果。
该 operations_per_fragment 表包含以下列:
-
fq_name该碎片的名称
-
parent_fq_name该碎片的父名称
-
type对象类型;见文本以获取可能的值
-
table_id该表的表 ID
-
node_id该节点的节点 ID
-
block_instance内核块实例 ID
-
fragment_num碎片 ID(编号)
-
tot_key_reads该碎片副本的总键读取次数
-
tot_key_inserts该碎片副本的总键插入次数
-
tot_key_updates该碎片副本的总键更新次数
-
tot_key_writes该碎片副本的总键写入次数
-
tot_key_deletes该碎片副本的总键删除次数
-
tot_key_refs键操作被拒绝的次数
-
tot_key_attrinfo_bytes所有
attrinfo属性的总大小 -
tot_key_keyinfo_bytes所有
keyinfo属性的总大小 -
tot_key_prog_bytes所有
attrinfo属性携带的解释程序的总大小 -
tot_key_inst_exec键操作的解释程序执行的总指令数
-
tot_key_bytes_returned键读取操作返回的总数据和元数据大小
-
tot_frag_scans该碎片副本上的总扫描次数
-
tot_scan_rows_examined扫描操作检查的总行数
-
tot_scan_rows_returned扫描操作返回给客户端的总行数
-
tot_scan_bytes_returned扫描操作返回给客户端的总数据和元数据大小
-
tot_scan_prog_bytes扫描操作的解释程序的总大小
-
tot_scan_bound_bytes有序索引扫描使用的总边界大小
-
tot_scan_inst_exec扫描操作的解释程序执行的总指令数
-
tot_qd_frag_scans该碎片副本上的扫描队列次数
-
conc_frag_scans该碎片副本上的当前活动扫描次数(排除队列扫描)
-
conc_qd_frag_scans该碎片副本上的当前队列扫描次数
-
tot_commits
该碎片副本上的总提交次数
注意
该 fq_name 包含该碎片副本所属的模式对象的完全限定名称。当前,这具有以下格式:
-
基本表:
DbName/def/TblName -
BLOB表:DbName/def/NDB$BLOB_BaseTblId_ColNo -
有序索引:
sys/def/BaseTblId/IndexName -
唯一索引:
sys/def/BaseTblId/IndexName$unique
唯一索引的 $unique 后缀由 mysqld 添加;对于由其他 NDB API 客户端应用程序创建的索引,这可能不同或不存在。
刚刚显示的完全限定对象名称的语法是一个内部接口,可能会在未来版本中更改。
考虑一个表 t1 由以下 SQL 语句创建和修改:
CREATE DATABASE mydb;
USE mydb;
CREATE TABLE t1 (
a INT NOT NULL,
b INT NOT NULL,
t TEXT NOT NULL,
PRIMARY KEY (b)
) ENGINE=ndbcluster;
CREATE UNIQUE INDEX ix1 ON t1(b) USING HASH;
如果 t1 被分配表 ID 11,则产生以下 fq_name 值:
-
基本表:
mydb/def/t1 -
BLOB表:mydb/def/NDB$BLOB_11_2 -
有序索引(主键):
sys/def/11/PRIMARY -
唯一索引:
sys/def/11/ix1$unique
对于索引或 BLOB 表,parent_fq_name 列包含相应基本表的 fq_name。对于基本表,这一列始终为 NULL。
该 type 列显示了该片段使用的模式对象类型,可以是 System table、User table、Unique hash index 或 Ordered index。BLOB 表显示为 User table。
该 table_id 列值在任何给定时间都是唯一的,但可以在相应对象被删除后重用。可以使用 ndb_show_tables 实用程序查看相同的 ID。
该 block_instance 列显示该片段副本属于哪个 LDM 实例。可以使用该信息从 threadblocks 表中获取特定线程的信息。第一个实例总是编号为 0。
由于通常有两个片段副本,假设这是如此,每个 fragment_num 值应该在同一个节点组中的两个不同数据节点上出现两次。
由于 NDB 不使用单键访问有序索引,因此 tot_key_reads、tot_key_inserts、tot_key_updates、tot_key_writes 和 tot_key_deletes 计数不会因有序索引操作而增加。
使用 tot_key_writes 时,需要注意写操作在此上下文中更新行如果键存在,否则插入新行。(一个使用是 NDB 实现 REPLACE SQL 语句。)
该 tot_key_refs 列显示 LDM 拒绝的键操作次数。通常,这种拒绝是由于重复键(插入)、Key not found 错误(更新、删除和读取)或操作被解释程序所拒绝的行匹配键。
该 attrinfo 和 keyinfo 属性由 tot_key_attrinfo_bytes 和 tot_key_keyinfo_bytes 列计数,是 LQHKEYREQ 信号(见 The NDB Communication Protocol)用于启动键操作的 LDM。一个 attrinfo 通常包含元组字段值(插入和更新)或投影规范(读取);keyinfo 包含用于定位给定元组的主键或唯一键。
该 tot_frag_scans 值包括完整扫描(检查每一行)和子集扫描。唯一索引和 BLOB 表从不扫描,因此该值对于这些片段副本总是 0。
tot_scan_rows_examined 可能小于给定片段副本中的总行数,因为有序索引扫描可以被边界限制。此外,客户端可能在所有潜在匹配行都被检查之前结束扫描;这在使用包含 LIMIT 或 EXISTS 子句的 SQL 语句时发生。tot_scan_rows_returned 总是小于或等于 tot_scan_rows_examined。
tot_scan_bytes_returned 包括在推送连接的情况下,投影返回到 DBSPJ 块中的 NDB 内核中。
tot_qd_frag_scans 可以受到 MaxParallelScansPerFragment 数据节点配置参数的设置影响,该参数限制了单个片段副本上可以并发执行的扫描数。