该 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_instance
LDM 实例 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