在金仓数据库KingbaseES中查询对象封锁情况

 

关键字

对象、

问题描述

如何在金仓数据库KingbaseES中查询对象封锁情况?

解决方案

KingbaseES使用锁控制用户对数据库对象,包括:表、页面、元组、事务、非表

对象(函数,触发器等)的并发访问。

编号

锁模式(LOCKMODE)

对应操作

与之冲突的模式

1

AccessShareLock

SELECT

8

2

RowShareLock

SELECT FOR UPDATE

7,8

3

RowExclusiveLock

INSERT, UPDATE, DELETE

5,6,7,8

4

ShareUpdateExclusiveLock

VACUUM

4,5,6,7,8

5

ShareLock

CREATE INDEX

3,4,6,7,8

6

ShareRowExclusiveLock

like ExclusiveLock, but allows ROW SHARE

3,4,5,6,7,8

7

ExclusiveLock

blocks ROW SHARE

2,3,4,5,6,7,8

8

AccessExclusiveLock

DROP TABLE, ALTER TABLE

全部

如果一个对象被加上了一种模式的锁,那么其他用户如果想加上和此模式相冲突的锁,就会发生冲突。这个用户必须等待,直到加上的锁被释放。

示例:

test=# create table t1l(a int) ;

CREATE TABLE

test=# select oid from sys_ class where relname='tl' ;

oid

28461

(1行记录)



test=# select locktype,database,relation,pid,mode from sys_locks where relation= '28461’;

locktype | database | relation | pid | mode

--------+--------+-------+-----+-------

(0行记录)



test=# begin;

BEGIN

test=# select * from tl;

a

----

(0行记录)



test=# select locktype,database,relation,pid,mode from sys_locks where relation= '28461’;

locktype | database | relation | pid | mode 

--------+--------+-------+-----+-------

relation | 16518 | 28461 | 13676 |  AccessShareLock

(1行记录)



test=# insert into tl values (1);

INSERT 0 1

test=# select locktype,database,relation,pid,mode from sys_locks where relation= '28461’;

locktype | database | relation | pid | mode 

--------+--------+-------+-----+-------

relation | 16518 | 28461 | 13676 | AccessShareLock

relation | 16518 | 28461 | 13676 | ROwE XC lusiveL ock

(2行记录)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值