Postgresql 自动真空后,pg_烤面包桌未缩小尺寸

Postgresql 自动真空后,pg_烤面包桌未缩小尺寸,postgresql,vacuum,autovacuum,Postgresql,Vacuum,Autovacuum,我在使用Postgresql 9.3 我有一个巨大的pg_toast表,pg_toast_675632,占用27GB。 除非我有误解,否则这个pg_toast_675632太大了,因为我在数据表中有一个很大的json列,pg_toast_675632与我的表相关。因此,我在my_table中对json进行了大量简化(即从包含100个元素的json简化为2-5个元素)。但是,在自动吸尘后,pg_toast_675632仍为27 GB。这是因为autovacuum不会将回收的空间返回到磁盘吗 那么根

我在使用Postgresql 9.3

我有一个巨大的pg_toast表,
pg_toast_675632
,占用27GB。

除非我有误解,否则这个
pg_toast_675632
太大了,因为我在数据表中有一个很大的
json
列,
pg_toast_675632
与我的表相关。因此,我在
my_table
中对json进行了大量简化(即从包含100个元素的json简化为2-5个元素)。但是,在自动吸尘后,
pg_toast_675632
仍为27 GB。这是因为autovacuum不会将回收的空间返回到磁盘吗

  • 那么根据上述链接上的文档,我是否需要手动运行
    真空(完整)pg_toast_675632
  • 我知道
    VACUUM(FULL)
    需要很长时间,并且会在写入期间锁定
    pg_toast_675632

  • 真空全pg_toast_675632有什么风险?这是否等同于锁定
    my_table
    ,因为这就是
    pg_toast-675632
    的相关内容

  • 正确的自动真空不会回收空间

    您必须在
    my_table
    上运行
    VACUUM(FULL)
    ,这也将释放TOAST table中的空间

    缺点是
    ACCESS EXCLUSIVE
    锁,在运行
    VACUUM(FULL)
    时会阻止所有并发活动


    作为超级用户,您可以直接在烤面包桌上运行
    真空吸尘器
    ,但我看不出它的优点。

    效果很好。谢谢你的解释。