Postgresql二进制列可用内存

时间:2018-01-01 23:09:39

标签: postgresql binary

我们有一个数据库,我们暂时存储一些小文件,然后再将它们推送到S3。我现在遇到的问题是,一旦我们清除Postgresql中的二进制文件(设置二进制列值= null),它似乎不会释放内存。我们错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您需要执行vacuum full才能收回可用空间,或只需vacuum即可重新使用空间。 doc说:

  

普通VACUUM(没有FULL)只是回收空间并制作它   可重复使用。这种形式的命令可以并行运行   正常读写表,作为独占锁   没有获得。但是,额外的空间不会返回到操作中   系统(在大多数情况下);它只是可以在内部重复使用   同桌。 VACUUM FULL将表的全部内容重写为   一个没有额外空间的新磁盘文件,允许使用未使用的空间   返回操作系统。这种形式要慢得多   在处理每个表时,需要对每个表进行独占锁定。

我们强调这对于deleteupdate命令都是如此。

  

建议不要将FULL选项用于日常使用,但可能是   在特殊情况下有用。一个例子是当你删除或   更新表中的大多数行并希望表格为   物理缩小以占用更少的磁盘空间并允许更快的表   扫描。 VACUUM FULL通常会比平面收缩更多   VACUUM会。