人大金仓数据库KingbaseES rac封锁管理操作演示

金仓数据库KingbaseES rac封锁管理操作演示

关键字:

KingbaseES、RAC、封锁管理、死锁检测、人大金仓

rac封锁管理操作演示:

系数据库共享存储集群支持封锁管理:

  1. root用户查看集群资源状态,是2节点共享存储集群:

crm status

2. 两节点同时用rac用户连接ksql,执行\d :

/home/rac/KingbaseRAC/bin/ksql -Usystem -dtest -p55555

3. 节点1创建表tab1,并插入基础数据:

drop table if exists tab1;

create table tab1(id int);

insert into tab1 values(1);

4. 两节点都执行begin语句开启事务,读tab1表的数据,同时观察锁:

begin;

select * from sys_locks;

select * from tab1;

select * from sys_locks;

end;

节点1:

节点2:

可以看见两事务都申请了访问共享锁,且不会相互阻塞。

5. 节点1在事务中执行读操作,节点2在事务中执行删除表操作,因访问独占锁与访问共享锁冲突而阻塞。

节点1:

begin;

select * from sys_locks;

select * from tab1;

select * from sys_locks;

节点2:

begin;

drop table tab1;

6. 节点1事务正常,查看锁数据,发现节点2阻塞,end节点1事务,节点2事务继续执行,验证表数据,然后执行回滚操作。

节点1:

select * from sys_locks;

end:

节点2:

select * from tab1;

rollback;

select * from tab1;

可见访问独占锁与访问共享锁冲突而阻塞。

7. 同上述18,19操作,如果节点2的drop操作被阻塞时,节点1也执行操作drop想获得访问独占锁,那就会死锁:

节点1:

begin;

select * from tab1;

节点2:

begin;

select * from tab1;

select * from sys_locks;

drop table tab1;

8. 此时节点1也执行drop操作,预期会产生死锁,观察两节点:

节点1:

drop table tab1;

节点2:

自动检测死锁情况的监控机制,一旦死锁发生后,数据库便会自动将造成死锁的事务进行随机回滚,打破循环等待的状态,从而解决死锁问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值