在AWS RDS中,自动清理是通过守护进程定期运行来完成的,以清理不再被使用的空间。在PostgreSQL中,清理空间的过程称为“vacuuming”。该过程包括两个阶段:“标记和显示”和“清理”。
在第一阶段,未使用的空间被标记为可用的,但并没有被清理并返回给操作系统。在第二阶段中,空间将被清理并返回给系统。这个过程被称为“回收”。
因此,自动清理只是在同一张表中重新使用已标记但未清理的空间,但不会将空间返回给操作系统。如果您想要返回未使用的空间,请使用以下命令:
VACUUM FULL;
这个命令将清空表中未使用的空间并将其返回给操作系统。但请注意,这个命令可能会导致数据库停止响应,因为它需要较长的时间来执行。
代码示例:
-- 将空间回收到操作系统 VACUUM FULL;
-- 检查表大小 SELECT pg_size_pretty(pg_total_relation_size('table_name'));
-- 显示从操作系统回收的大小 SELECT pg_size_pretty(pg_relation_size('table_name'));