postgresql MVCC详解

postgresql MVCC详解
1.postgresql隐藏列
1)tableoid
表对象唯一标识符
2)xmin
插入操作的事务标识符
3)xmax
删除操作的事务标识符
4)cmin
插入操作的命令标识符
5)cmax
删除操作的命令标识符
6)ctid
行数据的物理位置标识符
示例如下:

2.postgresql mvcc原理

当更新一笔数据时,发现ctid发生了变化,这说明更新时,不是在原物理位置更新的,实际上是,新增了一条数据,然后将旧的数据做了标记隔离。
那么数据是否对当前事务可见的规则是什么呢?
1)对于数据的mxin>自身事务id的row一定不可见
意思是,在sql命令执行以后的crud操作,当前命令肯定是不可见的。
2)对于数据的xmin<自身事务Id且已提交,当前事务可见。
意思是,在sql命令执行之前的crud操作,必须其他事务已提交的情况下,当前事务才可见。

posted on 2017-09-18 19:51  迪米特  阅读(784)  评论(0编辑  收藏  举报

导航