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

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

已解决

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

展开
收起
云上静思 2022-10-18 15:34:02 393 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”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about

相关电子书

更多
PostgreSQL 物联网六脉神剑 立即下载
PostgreSQL在哈啰的实践-周飞 立即下载
PostgreSQL高并发数据库应用数据 立即下载

相关镜像