暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 数据猿 2024-01-15
1128


金仓数据库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:

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


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论