该 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
数据节点配置参数的设置影响,该参数限制了单个片段副本上可以并发执行的扫描数。