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
列显示表类型。这始终是以下之一:系统表
、用户表
、唯一哈希索引
、哈希索引
、唯一有序索引
、有序索引
、哈希索引触发器
、订阅触发器
、只读约束
、索引触发器
、重组触发器
、表空间
、日志文件组
、数据文件
、撤消文件
、哈希映射
、外键定义
、外键父触发器
、外键子触发器
或 模式事务
。
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