暂无图片
he3db是否有多版本页的问题
我来答
分享
暂无图片 匿名用户
he3db是否有多版本页的问题

he3db是否有多版本页的问题

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
有木名凌霄

不同于PostgreSQL,在PostgreSQL中,页要么在内存中,内存中的页一定是最新页,要么因为Buffer Pool满了被淘汰掉刷盘存储在磁盘中,此时磁盘中的页也一定是最新页,因为是内存中含有的最新的页刷盘刷下来的,肯定是最新的。而当需要更新某个页时,也是将页从磁盘读到Buffer中,在内存中更新页,将页标记为脏页,这时候,最新页在内存中,不存在多版本页的问题。而在He3DB中,则存在多版本页的问题,最直接的原因就是此时的最新页并不是通过从内存中刷盘刷下来的,因为计算节点仅仅将WAL日志发送给了推进节点,并没有将页发送到推进节点,推进节点是通过旧的一个版本的页加上WAL日志回放到最新页,而回放到那个位置是有限制的,因为只读节点的一致性的限制,往往推进节点不能推进到最新页,推进的位置(也就是推进到那个LSN)要满足不能超过当前只读节点的最新LSN,因为一旦超过了,那么只读节点从推进节点获取页+WAL日志的时候,就会得到“未来页”,引发不一致。可以认为页有很多版本,通过<Page+LSN>的方式,标识每个版本。

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