暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8c 教程 (十八)防止事务ID回滚失败

唤溪 2022-01-18
306

GBase 8c数据库的MVCC事务依赖于对事务ID(XID)的比较:如果一个插入事务的XID大于当前事务的XID,则插入操作就是属于“未来的”操作,对当前事务不可见。但是由于当前最大可支持事务数40亿,一旦超出40亿,则XID从0开始重新计数。如果一个长事务超过40亿事务数的时间,则本来属于过去的事务会突然变成未来事务,会导致灾难性的数据丢失。

为了避免这种情况发生,需要至少在每20亿事务清理数据库中的所有表。

为了跟踪一个数据库中最老的未冻结XID的年龄,VACUUM在系统表pg_class和pg_database中存储XID的统计信息:

  • 表pg_class的relfrozenxid列包含上一次全表VACUUM所用的冻结截止XID;
  • 表pg_database的datfrozenxid列是出现在该数据库中的未冻结XID的最小值。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论