GBase 8c
其他
文章

南大通用GBase 8c数据一致性验证

发表于2024-06-19 15:32:00425次浏览1个评论

GBase 8c采用MVCC(多版本并发控制)技术,实现读写不冲突,提升读写并行处理能力。支持多重机制保证数据一致性。

下文对读已提交、可重复读两种隔离级别进行测试验证。

1、读已提交
默认隔离级别查询:

select name,setting from pg_settings where name='default_transaction_isolation';

创建测试表AMOUNT:

CREATE TABLE AMOUNT (
id  varchar(10),
money numeric(6,2)
)
distribute by hash(id) 
to group default_group;

插入测试数据:

insert into amount(id,money) values('A', 800);
insert into amount(id,money) values('B', 200);
insert into amount(id,money) values('C', 1000);

session1,测试读已提交,插入数据:

START TRANSACTION ISOLATION LEVEL read committed;  
insert into amount(id,money) values('D', 1000);

开启session2查询数据,只能查到前3行,未提交的D查不到:

select * from amount;

session1,提交事务

commit;

session2中查询数据,能查看到D数据:

select * from amount;

2、可重复读 repeatable read

创建测试表AMOUNT

drop table AMOUNT;
CREATE TABLE AMOUNT (
id  varchar(10),
money numeric(6,2)
)
distribute by hash(id) 
to group default_group;

插入测试数据

insert into amount(id,money) values('A', 800);
insert into amount(id,money) values('B', 200);
insert into amount(id,money) values('C', 1000);
select * from amount;

session1,测试可重复读,插入数据

begin isolation level repeatable read;
select * from amount;

开启session2,插入D数据

insert into amount(id,money) values('D', 1000);
select * from amount;

session1查询数据,可以重复查看之前的数据

select * from amount;

评论

登录后才可以发表评论
GBase用户47954发表于 1个月前
感谢作者的精彩分享!