我们有一个数据库,我们暂时存储一些小文件,然后再将它们推送到S3。我现在遇到的问题是,一旦我们清除Postgresql中的二进制文件(设置二进制列值= null),它似乎不会释放内存。我们错过了什么吗?
答案 0 :(得分:2)
您需要执行vacuum full
才能收回可用空间,或只需vacuum
即可重新使用空间。
doc说:
普通VACUUM(没有FULL)只是回收空间并制作它 可重复使用。这种形式的命令可以并行运行 正常读写表,作为独占锁 没有获得。但是,额外的空间不会返回到操作中 系统(在大多数情况下);它只是可以在内部重复使用 同桌。 VACUUM FULL将表的全部内容重写为 一个没有额外空间的新磁盘文件,允许使用未使用的空间 返回操作系统。这种形式要慢得多 在处理每个表时,需要对每个表进行独占锁定。
我们强调这对于delete
或update
命令都是如此。
建议不要将FULL选项用于日常使用,但可能是 在特殊情况下有用。一个例子是当你删除或 更新表中的大多数行并希望表格为 物理缩小以占用更少的磁盘空间并允许更快的表 扫描。 VACUUM FULL通常会比平面收缩更多 VACUUM会。