开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

PostgreSQL为什么不能用CLOG来独立地判断事务是否运行,而要去遍历Proc Array呢?

已解决

PostgreSQL为什么不能用CLOG来独立地判断事务是否运行,而要去遍历Proc Array呢?

展开
收起
云上静思 2022-10-18 15:34:02 387 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    这是因为CLOG中每个XID的Commit的状态都是准确的,REDO可以恢复所有提交状态,只要提交了肯定都有。Abort的 状态就不一定了,因为Abort分为事务主动Abort,或者是报错,它会记录在CLOG中。但是数据库Crash的时候,比如断 电或其他原因造成的事务abort,就来不及写入CLOG,REDO也没法恢复。对于CLOG中未写入提交状态的事务,它可 能是正在运行,也有可能是Crash Aborted,这个时候我们就没法通过CLOG去做判断,所以PG需要结合Proc Array去 判断是否正在运行。

    以上内容摘自《PolarDB for PostgreSQL 源码与应用实战》电子书,点击https://developer.aliyun.com/ebook/download/7773可下载完整版

    2022-10-18 16:31:52
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像