21.5.14.4 ndbinfo cluster_lockstable

cluster_lockstable 提供有关 NDB 群集中NDBtable 上当前持有和 await 锁的当前锁定请求的信息,并用作cluster_operations的伴随 table。从cluster_lockstable 获取的信息可能对调查停滞和死锁很有用。

cluster_lockstable 包含以下列:

  • node_id

报告节点的 ID

  • block_instance

报告 LDM 实例的 ID

  • tableid

包含该行的 table 的 ID

  • fragmentid

包含锁定行的片段的 ID

  • rowid

锁定行的 ID

  • transid

Transaction ID

  • mode

锁定请求模式

  • state

Lock state

  • detail

这是否是第一个在行锁队列中持有锁

  • op

Operation type

  • duration_millis

await 或保持锁定所花费的毫秒数

  • lock_num

锁对象的 ID

  • waiting_for

await 具有此 ID 的锁定

Notes

tableID(tableid列)是在内部分配的,并且与其他ndbinfotable 中使用的 ID 相同。它也显示在ndb_show_tables的输出中。

事务 ID(transid列)是 NDB API 为请求或持有当前锁的事务生成的标识符。

mode列显示锁定模式;它始终是S(table 示共享锁)或X(独占锁)之一。如果事务在给定行上拥有排他锁,则该行上的所有其他锁都具有相同的事务 ID。

state列显示锁定状态。它的值始终是H(保持)或W(await)之一。await 锁请求 await 另一个事务持有的锁。

detail列包含*(星号字符)时,table 示此锁是受影响的行的锁队列中的第一个保持锁;否则,此列为空。此信息可用于帮助识别锁定请求列 table 中的唯一条目。

op列显示请求锁定的操作类型。这始终是值READINSERTUPDATEDELETESCANREFRESH之一。

duration_millis列显示此锁定请求已 await 或持有锁定的毫秒数。当为 await 的请求授予锁时,此位重置为 0.

锁 ID(lockid列)对此节点和块实例唯一。

锁定状态显示在lock_state列中;如果这是W,则 await 授予锁,并且waiting_for列显示此请求正在 await 的锁对象的锁 ID。否则,waiting_for列为空。 waiting_for只能引用同一行上的锁,由node_idblock_instancetableidfragmentidrowid标识。

cluster_lockstable 已添加到 NDB 7.5.3 中。