金仓数据库KingbaseES rac封锁管理操作演示
关键字:
KingbaseES、RAC、封锁管理、死锁检测、人大金仓
rac封锁管理操作演示:
系数据库共享存储集群支持封锁管理:
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: 自动检测死锁情况的监控机制,一旦死锁发生后,数据库便会自动将造成死锁的事务进行随机回滚,打破循环等待的状态,从而解决死锁问题 |