【事务】读未提交

【pg不支持读未提交】

[session1]

BEGIN;
INSERT INTO my_table(id,value) VALUES (1,'something');

[session2]

BEGIN TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SELECT * FROM my_table;

1)代码调试

紫色未未提交时,最终通过判断tup.minId>=snapshot.xmax返回不可见

 绿色位提交后,通过t_infomask的256位变为1,判断可见

【问题】

1)t_infomask的初始化2048

初始化位2048

tup->t_data->t_infomask |= HEAP_XMAX_INVALID;

2)变为2304代码

3) pg里读未提交被当做读已提交

posted @ 2022-02-12 22:32  stupidstan2019  阅读(117)  评论(0编辑  收藏  举报