暂无图片
PostgreSQL为什么不能用CLOG来独立地判断事务是否运行,而要去遍历Proc Array呢?
我来答
分享
暂无图片 匿名用户
PostgreSQL为什么不能用CLOG来独立地判断事务是否运行,而要去遍历Proc Array呢?

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

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
数据库小学生

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

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏