Postgresql 自动真空后,pg_烤面包桌未缩小尺寸
我在使用Postgresql 9.3 我有一个巨大的pg_toast表,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不会将回收的空间返回到磁盘吗 那么根
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)
时会阻止所有并发活动
作为超级用户,您可以直接在烤面包桌上运行
真空吸尘器,但我看不出它的优点。效果很好。谢谢你的解释。