PgSQL · 特性分析 · 事务ID回卷问题

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

PgSQL · 特性分析 · 事务ID回卷问题

db匠 2018-03-22 09:00:15 浏览1798
展开阅读全文

背景

在之前的月报 PgSQL · 特性分析 · MVCC机制浅析中,我们了解到了:

  • 事务ID(XID)使用32位无符号数来表示,顺序产生,依次递增
  • 每个元组会来用(t_xmin, t_xmax)来标示自己的可用性
  • t_xmin 存储的是产生这个元组的事务ID,可能是insert或者update语句
  • t_xmax 存储的是删除或者锁定这个元组的XID
  • 每个事务只能看见t_xmin比自己XID 小且没有被删除的元组

其中需要注意的是,XID 是用32位无符号数来表示的,也就是说如果不引入特殊的处理,当PostgreSQL的XID 到达40亿,会造成溢出,从而新的XID 为0。而按照PostgreSQL的MVCC 机制实现,之前的事务就可以看到这个新事务创建的元组,而新事务不能看到之前事务创建的元组,这违反了事务的可见性。本文将这种现象称为XID

网友评论

登录后评论
0/500
评论
db匠
+ 关注
所属云栖号: 阿里云数据库ApsaraDB