Skip to content

全局锁-sys_all_glocks

功能描述

sys_all_glocks系统表用于管理主副节点全局锁信息。

说明:

sys_all_glocks系统表在较低版本的数据库不支持,详细信息请联系运维人员获取。

字段说明

序号字段名类型说明
0NODEIDINTEGER节点ID
1LOCK_TYPEINTEGER全局锁类型
2LOCK_IDBIGINT锁ID
3REFVARCHAR锁引用描述

LOCK_TYPE说明

LOCK_TYPE说明

数值说明等候对象场景
1库级锁db_id修改系统元信息,如:
增加审计项、创建库、修改库元信息、删除对象、创建策略等
2对象操作锁db_id、obj_id对象操作,如:
创建、删除、修改、开表、重建索引等操作
3对象存储维护锁db_id、table_id对象存储维护,如:
存储迁移、修复,流式入库等
4预留预留预留
5全局存储锁gsto_no全局存储维护,如:
索引分裂、存储同步、master扩展全局存储、删除缓变副本等
6局部存储读写锁sto_no局部存储维护,如:
存储同步
7局部存储迁移锁sto_no局部存储操作,如:
复制局部存储、释放大对象存储、对表中插入行等
8事务锁事务号事务操作,如:
事务初始化、事务开始
9用户名锁db_id、user_name哈希值用户操作,如:
用户登录、用户创建、修改、删除等
10数据装载锁db_id、table_id流式入库操作,如:
数据流式导入
11全局存储修复锁gsto_no全局存储操作,如:
Master节点上索引单元分裂、远程创建全局存储、流式入库存储同步等
12表分区扩展锁db_id、table_id分区表操作,如:
分区扩展、分区表删除、分区表开表等
13全局临时表锁db_id、table_id临时表操作,如:
临时表修改、删除等

解析

  • 查询数据库所有锁信息

  • 系统全局锁可通过lock_id计算出对象ID,计算公式BIT_AND(lock_id,4294967295)

    sql
    SQL> SELECT * FROM sys_all_glocks WHERE lock_id='576460765189374355';
    
    NODEID | LOCK_TYPE | LOCK_ID | REF | 
    ------------------------------------------------------------------------------
    1 | 3 | 576460765189374355 | [S]1,[X]0,[IS]0,[IX]0,[SIX]0|
    1 | 2 | 576460765189374355 | [S]0,[X]0,[IS]1,[IX]0,[SIX]0|
    2 | 3 | 576460765189374355 | [S]1,[X]0,[IS]0,[IX]0,[SIX]0|
    2 | 2 | 576460765189374355 | [S]0,[X]0,[IS]1,[IX]0,[SIX]0|
    -- 通过公式计算出对象ID
    SQL> SELECT BIT_AND(576460765189374355,4294967295) FROM DUAL;
    
    EXPR1 | 
    ------------------------------------------------------------------------------
    1048979 |
    --通过ID查询出对象信息
    SQL> SELECT * FROM sys_objects WHERE obj_id=1048979;
    
    DB_ID | USER_ID | SCHEMA_ID | OBJ_ID | OBJ_NAME | OBJ_TYPE | IS_SYS | DROPED | RESERVED1 | RESERVED2 | RESERVED3 | 
    ------------------------------------------------------------------------------
    3 | 110 | 110 | 1048979 | TTSTORE| 5 | F | F | <NULL>| <NULL>| <NULL>|
  • REF包含基础锁类型S(共享锁)、X(排他锁)和意向锁类型IS(意向共享锁)、IX(意向排他锁),以及组合锁类型SIX(组合锁)。 例如: [S]0

    • [S]:锁类型(共享锁)
    • 0:0个节点持有该锁