PolarDB PostgreSQL版(兼容Oracle)支持通过vacuum命令对垃圾数据进行回收。回收垃圾数据释放的空间并不会返还给操作系统,但是新插入或更新的数据可以使用该空间。

垃圾回收机制

在上图中,tuple1tuple2代表有效数据行,unused代表无效数据行,通过垃圾回收后,无效数据行占用的空间得到释放,可以被重新利用。

PolarDB PostgreSQL版(兼容Oracle)通过多版本来实现MVCC机制,当执行UPDATE和DELETE操作时会产生一个新的数据行版本,老的数据行版本会变成无效版本,这些无效版本数据会占用数据块的空间,需要及时进行清理,否则会导致数据的膨胀。当无效数据行占总数据行数的一定数值时(您可以根据需求自定义设置无效数据行数占比),PolarDB PostgreSQL版(兼容Oracle)会自动触发垃圾数据的回收动作,通过VACUUM进程对垃圾数据进行回收;您也可以手动执行vacuum table_name进行垃圾数据的回收。