Greenplum ao表和heap表垃圾回收的细微差别
标签
PostgreSQL , Greenplum , 垃圾回收 , vacuum
背景
在Greenplum中删除、更新数据记录时,会产生新的tuple版本,老的版本通过行头部标记:为已删除以及被哪个事务删除的。
因此频繁的更新后,或者批量的删除数据后,需要回收那些旧的版本。
通过vacuum、vacuum full、alter table redistribute命令,可以回收垃圾。
《如何检测、清理Greenplum垃圾 - 阿里云HybridDB for PG最佳实践》
但是回收AO表与回收HEAP表有些许不一样的地方,因为它们的存储方式有差异。
vacuum ao表
ao表为追加存储,当删除、更新记录时,有一个BITMAP对象来存储对应的记录是否被删除。
每个AO表的每个数据文件对应一条BITMAP信息,每个BIT位对应这个数据文件的一行。