这种现象就是 不可重复读。
幻读(Phantom read), 一个事务的两次执行相同的查询, 结果集数目不一致. 幻读 可以 认为是 受 INSERT 和 DELETE 影响 不可重复读 的特例。...下面的语句,就是在插入第一条数据之后保存了一个检查点,然后继续insert,最后回滚到保存的检查点再进行提交,最终的效果是只有第一条数据插入有效:
postgres=# begin;
BEGIN
postgres...pg_ctl restart
step 4.使用COMMIT PREPARED进行最终提交:
重启了数据库之后,我们先查看下t1表里面有没有我们插入的数据,以验证预提交阶段是不会实际插入数据的:
postgres...由于 MVCC 读写不会相互阻塞, 避免了大粒度和长时间的锁定, 能更好地适应 对读的响应速度 和 并发性要求高的场景, 常见的数据库如 Oracle, PostgreSQL, MySQL(Innodb...PostgreSQL 内部数据结构中, 每个元组(行记录) 有 4 个与事务可见性相关的 隐藏列:
xmin, 创建该行数据的 xid;
xmax, 删除改行的xid;
cmin, 插入该元组的命令在事务中的命令序列号