局部锁-sys_locks
功能描述
sys_locks系统表用于管理数据库局部锁。
字段说明
序号 | 字段名 | 类型 | 说明 |
---|---|---|---|
0 | NODEID | INTEGER | 节点ID |
1 | LOCK_TYPE | INTEGER | 全局锁类型 |
2 | LOCK_ID | BIGINT | 锁ID |
3 | REF | VARCHAR | 锁引用描述 |
4 | NODE_OWN | VARCHAR | 节点持有锁 |
5 | NODE_REQ | VARCHAR | 节点请求锁 |
6 | WAIT_REVOKE | VARCHAR | 等候归还锁 |
说明:
NODEID在较低版本的数据库不支持,详细信息请联系运维人员获取。
示例
- 查询拥有局部锁的节点ID
- 查询局部持有锁信息
- NODE_REQ、WAIT_REVOKE在锁请求过程中产生sql
-- 1号节点执行 -- 创建表 CREATE TABLE t1(id int); -- 设置非自动提交 SET auto_commit off; -- 为t1表增加排他锁 LOCK t1 IN EXCLUSIVE MODE; -- 此时1号节点持有 全局X锁 SELECT * FROM sys_all_locks WHERE lock_id=576460756599457564; NODEID|LOCK_TYPE|LOCK_ID |REF |NODE_OWN|NODE_REQ|WAIT_REVOKE| ------+---------+------------------+----------------------------+--------+--------+-----------+ 1| 3|576460756599457564|[S]0,[X]0,[IS]0,[IX]0,[SIX]0|S | | | 1| 2|576460756599457564|[S]0,[X]1,[IS]0,[IX]0,[SIX]0|X | | | -- 2号节点执行查询 select * from t1; -- 1号节点查询 SELECT * FROM sys_all_locks WHERE lock_id=576460756599457564; NODEID|LOCK_TYPE|LOCK_ID |REF |NODE_OWN|NODE_REQ|WAIT_REVOKE| ------+---------+------------------+----------------------------+--------+--------+-----------+ 1| 3|576460756599457564|[S]0,[X]0,[IS]0,[IX]0,[SIX]0|S | | | 1| 2|576460756599457564|[S]0,[X]1,[IS]0,[IX]0,[SIX]0|X | |IS | 2| 2|576460756599457564|[S]0,[X]0,[IS]0,[IX]0,[SIX]0| |IS | | -- 第三行,2号节点请求IS锁 -- 第二行,1号节点由于加了X锁,2号节点IS锁等候X锁归还
相关系统表
- sys_lowners
- sys_lwaiters