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
是由 NDB
生成的表的内部 ID。这是其他 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