PostgreSQL 10.0 preview 功能增强 - CLOG oldest XID跟踪-阿里云开发者社区

开发者社区> 阿里云数据库> 正文

PostgreSQL 10.0 preview 功能增强 - CLOG oldest XID跟踪

简介:

标签

PostgreSQL , 10.0 , oldest xid , XID , clog


背景

PostgreSQL tuple中记录的xmin,xmax事务号是uint32类型,所以是一个rotate使用的方式,需要frozen。

CLOG存储的是oldest XID之后的XID,也就是说这个XID之后的事务,都保留了事务提交的状态值,之前的CLOG可能被删除或者正在被删除。

这个patch与从CLOG获取事务状态相关,允许提交一个任意的XID值,不管在CLOG是否在TRUNCATE过程中,都可以安全的返回被查询的事务号的提交状态,(通过跟踪TRUNCATE过程中被清除的事务状态实现)。

Track the oldest XID that can be safely looked up in CLOG.  
  
This provides infrastructure for looking up arbitrary, user-supplied  
XIDs without a risk of scary-looking failures from within the clog  
module.  Normally, the oldest XID that can be safely looked up in CLOG  
is the same as the oldest XID that can reused without causing  
wraparound, and the latter is already tracked.  However, while  
truncation is in progress, the values are different, so we must  
keep track of them separately.  
  
Craig Ringer, reviewed by Simon Riggs and by me.  
  
Discussion: http://postgr.es/m/CAMsr+YHQiWNEi0daCTboS40T+V5s_+dst3PYv_8v2wNVH+Xx4g@mail.gmail.com  

对此增加了一个等待事件信息

+         <entry><literal>CLogTruncationLock</></entry>  
+         <entry>Waiting to truncate the transaction log or waiting for transaction log truncation to finish.</entry>  

这个patch的讨论,详见邮件组,本文末尾URL。

PostgreSQL社区的作风非常严谨,一个patch可能在邮件组中讨论几个月甚至几年,根据大家的意见反复的修正,patch合并到master已经非常成熟,所以PostgreSQL的稳定性也是远近闻名的。

参考

https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=ea42cc18c35381f639d45628d792e790ff39e271

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云数据库
使用钉钉扫一扫加入圈子
+ 订阅

帮用户承担一切数据库风险,给您何止是安心!

官方博客
链接