
在2021年12月14-17日举行的PostgresConf.CN&PGConf.Asia 2021大会上,来自Greenplum原厂的VMware研发工程师王晓冉发表了《PostgreSQL 空闲空间管理》主题演讲。在演讲中,王晓冉结合PostgreSQL存储引擎,分析了FSM的实现机制,并结合源代码,分析了FSM代码中主要数据结构,存储、并发及recovery的实现。
背景 功能 实现机制 源代码分析

我们再来看看MVCC。PostgreSQL采用MVCC多版本控制协议来实现多版本控制。在删除数据时,只标记,不删除。在写新数据时,旧数据不删除,而是把新数据插入。例如图中的更新操作,原数据中只有Tuple1一行数据,在更新时,并不删除Tuple1,而是插入更新后的Tuple2。Tuple1这样的旧数据很快会对所有事务不可见,变为过期无用的数据,它们所占用的空间将被释放。VACUUM进程就是负责释放过期数据占用的空间。


查找可用page 更新page的可用空间 持久化(FSM FORK) 并发 & Recovery

来一波 “在看”、“分享”和 “赞” 吧!
文章转载自Greenplum中文社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




