gpt4 book ai didi

postgresql - pg_toast 表在 autovacuum 之后大小没有减小

转载 作者:行者123 更新时间:2023-11-29 13:20:51 24 4
gpt4 key购买 nike

我使用的是 Postgresql 9.3。

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

除非我误解了,否则这个 pg_toast_675632 是如此之大,因为我在数据表中有一个很大的 json 列与 pg_toast_675632 相关到 my_table。所以我大量简化了 my_table 中的 json(即从具有 100 个元素的 json 减少到 2-5 个元素)。然而,在 autovacuum 之后,pg_toast_675632 仍然是 27 GB。这是因为 autovacuum 没有将回收的空间返回到磁盘吗? See the 3rd paragraph of 23.1.2 at this link.

  1. 那么根据上述链接中的文档,我是否需要手动运行 VACUUM (FULL) pg_toast_675632

我知道 VACUUM (FULL) 需要很长时间,并且会在这段时间内锁定 pg_toast_675632 以防止写入。

  1. VACUUM FULL pg_toast_675632 有哪些风险?这是否等同于锁定 my_table,因为它与 pg_toast-675632 相关?

最佳答案

正确的 autovacuum 不会回收空间。

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

缺点是 ACCESS EXCLUSIVE 锁会在 VACUUM (FULL) 运行时阻止所有并发事件。

作为 super 用户,您可以直接在 TOAST 表上运行 VACUUM,但我看不出有什么好处。

关于postgresql - pg_toast 表在 autovacuum 之后大小没有减小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42027513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com