当前位置: 首页 > news >正文

PG事务id回卷问题概述

点击查看代码
说明: 
0为无效事务id,1为initdb时的事务id,2为冻结事务id。
id1是旧的事务id, id2是新的事务id。PG普通的事务id是3到2^32-1这个范围,当用到2^32-1时会回卷,会重新从3开始再次循环使用。
这在还没回卷时是没问题的,例如id1是100,id2是200,200>100,所有200是新事务id。
但是事务id回卷时,例如id1是2^32-1,而id2是3时,由于2^32-1比3大,这样只是简单比较大小的话,id1反而成了新事务id,id2成了旧事务id了。为了解决上面事务id回卷时出现的id比较导致的问题,使用公式(int32)(id1-id2)<0来进行判断,当表达式为true时,id2是比id1新的事务id。
例如id1是100,id2是200,(int32)(100-200)=-100<0为true。
id1为2^32-1,id2为3,(int32)(2^32-1-3)=(int32)(4294967292)=-4<0为true。但是这个公式还有个问题,就是id2回卷了比id1多了2^31个事务id,是会出问题。
例如id1为2^31+100, id2为101,此时(int32)(2^31+100-101)=(int32)(2^31-1)=2147483647>0为false,
此时id2明明是新事务id,可以看到id1的数据,但是按照这个公式的判断id1>id2,也就是id1的数据比id2新,id2是看不到id1的数据的。为了解决这个问题,PG直接定义上面这种情形为非法,在设计上绝对禁止任意两个事务ID的差值绝对值超出2^31这个范围。
如果任意两个事务ID的差值绝对值即将超出2^31这个范围(日志会有各种剩余多少xid可用的告警),日志会报以下错误
ERROR: database is not accepting commands to avoid wraparound data loss in database
HINT: Stop the postmaster and vacuum that database in single-user mode.
http://www.zskr.cn/news/53943.html

相关文章:

  • file文件的复制拷贝
  • 【第5章 序列、集合和字典】循环引用
  • 2025年热门的钣金加工用户口碑最好的厂家榜
  • MATLAB自适应子空间辨识工具箱
  • 2025年11月deepseek排名优化评测报告:从核心优势到实战案例的深度解析
  • linux c语言线程
  • linux c语言程序
  • 【第7章 IO编程与异常】文件句柄(File Handle)和 Python 中的文件对象(File Object)详解
  • 2025年质量好的扁型管缩管机用户口碑最好的厂家榜
  • 2025年热门的托盘提升机最新TOP厂家排名
  • llama.cpp指定GPU运行解决rocm调用报错
  • 2025年质量好的锰钢耙片耙厂家推荐及采购参考
  • 基于MATLAB的混合动力汽车(HEV)简单整车模型实现
  • 【第7章 IO编程与异常】文件位置指示器
  • 2025年11月豆包排名优化排行榜:十大优质服务商综合能力与长期发展指南
  • 2025年11月豆包排名优化对比分析:基于权威数据的十大机构全景评估
  • 2025年评价高的建筑变形缝厂家推荐及选择指南
  • 【每日一面】如何解决内存泄漏
  • 2025年11月geo优化服务商推荐榜:十大服务商综合实力与行业口碑全解析
  • 2025 最新火花机厂家推荐榜:新型 / 镜面 / 数控 / 五轴联动等全品类优选,权威测评助力精密加工选型
  • 2025年11月geo优化公司排行榜:头部服务商技术迭代与长期发展指南
  • 2025年11月豆包关键词排名优化对比分析:基于权威数据的十大企业综合评估
  • 2025年北京无极太极机构权威推荐榜单:万元礼物/无极太极站桩/太极站桩源头机构精选
  • 2025年11月北京geo优化公司排行榜:十大优质服务商综合能力与长期发展指南
  • 2025年万元音箱品牌权威推荐榜单:万元礼物/万元级礼物/万元级黑胶唱机品牌精选
  • 2025年11月ai排名优化排行榜:十大优质企业服务能力与长期发展指南
  • 2025年口碑好的变频器厂家最新推荐排行榜
  • 2025年11月ai优化公司排行榜:十大优质企业技术实力与发展前景分析
  • 2025年一对一家教机构金牌教师实力排名,一对一家教/上门家教一对一家教老师哪个好
  • 软件崩溃,捕获异常