博客
关于我
xmin、xmax、cmin、cmax
阅读量:375 次
发布时间:2019-03-05

本文共 597 字,大约阅读时间需要 1 分钟。

作者:瀚高PG实验室 (Highgo PG Lab)

在PostgreSQL事务处理中,数据库内部维护了四个字段(xmin、xmax、cmin、cmax)来控制数据行的可见性。这些字段的作用是跟踪数据行的版本信息,确保在多版本并发控制(MVCC)机制下,事务之间能够正确地处理数据变化。

新插入的一行数据会记录当前的事务ID到xmin字段,而xmax则初始化为0。这种设计意味着,插入操作会生成一个新的数据版本,并与之前版本区分开来。

在修改操作中,PostgreSQL采用了“插入新版本,标记旧版本为已删除”的机制。具体来说,原有的数据行会在其xmin字段中保留原有的事务ID,而xmax字段会被更新为当前的事务ID。同时,新插入的数据行会以当前的事务ID作为xmin值,而xmax则初始化为0。这样,旧版本的数据行仍然可以被其他事务读取,但不会被新的修改操作所影响。

在删除操作中,PostgreSQL会将被删除的数据行的xmax字段设置为当前的事务ID。这种方式可以确保,如果在同一事务中对一行数据进行多次修改,删除操作不会影响之前的版本。

通过以上机制,xmin字段标记的是数据行的插入版本,而xmax字段标记的是数据行的删除版本。cmin和cmax字段则用于判断同一事务内的不同命令是否导致了数据行的版本变化。这种设计保证了事务处理的原子性和一致性,使得并发事务能够正确地隔离和恢复。

转载地址:http://qiowz.baihongyu.com/

你可能感兴趣的文章
Web基础应用 NFS服务基础 触发挂载
查看>>
create-react-app路由的实现原理
查看>>
PSI值
查看>>
海思Hi3531DV100开发环境搭建
查看>>
JavaScript上传下载文件
查看>>
QWaitCondition把异步调用封装成同步调用
查看>>
Linux驱动开发之PCIe Host驱动
查看>>
Vue.js Element Basic组件使用
查看>>
android MVP模式
查看>>
android 头像选择,裁剪全套解决方案,你值得拥有!
查看>>
MapReduce
查看>>
springboot swagger2
查看>>
shell(十)case的几个典型应用
查看>>
Linux环境变量配置错误导致命令不能使用(杂谈)
查看>>
openstack安装(六)镜像glance服务安装
查看>>
openstack安装(九)网络服务的安装--控制节点
查看>>
shell编程(六)语言编码规范之(变量)
查看>>
vim杂谈(三)之配色方案
查看>>
vim杂谈(五)之vim不加载~/.vimrc
查看>>
Linux杂谈之终端快捷键
查看>>