该 locks_per_fragment 表提供了每个片段的锁定请求计数和结果信息,作为 operations_per_fragment 和 memory_per_fragment 的伴随表。此表还显示了自片段或表创建以来,或者自最近一次重启以来,成功和不成功地等待锁定的总时间。
该 locks_per_fragment 表包含以下列:
-
fq_name完全限定表名
-
parent_fq_name父对象的完全限定名称
-
type表类型;见文本以获取可能的值
-
table_id表 ID
-
node_id报告节点 ID
-
block_instanceLDM 实例 ID
-
fragment_num片段标识符
-
ex_req独占锁请求开始
-
ex_imm_ok独占锁请求立即授予
-
ex_wait_ok独占锁请求在等待后授予
-
ex_wait_fail独占锁请求未授予
-
sh_req共享锁请求开始
-
sh_imm_ok共享锁请求立即授予
-
sh_wait_ok共享锁请求在等待后授予
-
sh_wait_fail共享锁请求未授予
-
wait_ok_millis等待锁请求授予的时间,毫秒
-
wait_fail_millis等待锁请求未授予的时间,毫秒
注意
block_instance 是内核块的实例。与块名称一起,这个数字可以用来在 threadblocks 表中查找给定的实例。
fq_name 是数据库对象的完全限定名称,以 database/schema/name 格式,例如 test/def/t1 或 sys/def/10/b$unique。
parent_fq_name 是该对象的父对象的完全限定名称(表)。
table_id 是表的内部 ID,由 NDB 生成。这是其他 ndbinfo 表中显示的相同内部表 ID,也可以在 ndb_show_tables 的输出中看到。
该 type 列显示表的类型。这总是 System table、User table、Unique hash index、Hash index、Unique ordered index、Ordered index、Hash index trigger、Subscription trigger、Read only constraint、Index trigger、Reorganize trigger、Tablespace、Log file group、Data file、Undo file、Hash map、Foreign key definition、Foreign key parent trigger、Foreign key child trigger 或 Schema transaction 之一。
所有列中的值:ex_req、ex_req_imm_ok、ex_wait_ok、ex_wait_fail、sh_req、sh_req_imm_ok、sh_wait_ok 和 sh_wait_fail 代表从表或碎片创建以来或从该节点最后一次重新启动以来的累积请求数,两者中较晚的那个。这也适用于 wait_ok_millis 和 wait_fail_millis 列中的时间值。
每个锁请求都被认为要么正在进行中,要么以某种方式完成(即成功或失败)。这意味着以下关系成立:
ex_req >= (ex_req_imm_ok + ex_wait_ok + ex_wait_fail)
sh_req >= (sh_req_imm_ok + sh_wait_ok + sh_wait_fail)
当前正在进行的请求数是当前未完成的请求数,可以按如下方式找到:
[exclusive lock requests in progress] =
ex_req - (ex_req_imm_ok + ex_wait_ok + ex_wait_fail)
[shared lock requests in progress] =
sh_req - (sh_req_imm_ok + sh_wait_ok + sh_wait_fail)
失败的等待表示事务中止,但中止可能不是由锁等待超时引起的。您可以按如下方式获取锁等待期间的总中止数:
[aborts while waiting for locks] = ex_wait_fail + sh_wait_fail