我有一个Postgres 9.6 RDS实例,并且每天增长1GB。我们对与pg_toast相关的关系做了一些优化,但是pg_toast的大小没有改变。
Autovacuum已打开,但是由于autovacuum / VACUUM FREEZE不会回收空间,而VACUUM FULL会进行独占锁定,因此我不确定最好的方法是什么。
表中的数据是我们用户体验的核心,尽管遵循this方法是有道理的,但它会带走用户希望在真空满负荷过程中看到的数据。
缩小pg_toast的其他方法有哪些?
以下是有关表大小的一些数据。您可以在前两个图像中看到关系scoring_responsescore
是与pg_toast关联的关系。
自动真空设置
该特定pg_toast当前正在运行的自动真空处理结果。这可能会有所帮助。
答案 0 :(得分:1)
VACUUM (FULL)
是PostgreSQL提供的减少表大小的唯一方法。
TO肿的TOAST桌对您来说是一个问题吗?始终通过TOAST索引访问TOAST表,因此膨胀不会是性能问题。
我知道有两个项目提供的表重组仅带有短的ACCESS EXCLUSIVE
锁,即pg_squeeze和pg_repack,但是您可能无法在Amazon中使用它们RDS数据库。
为使问题不再恶化,您应该首先尝试将受影响的表的autovacuum_vacuum_cost_limit
升高到2000,如果这样做不成功,请将autovacuum_vacuum_cost_delay
降低到0。使用ALTER TABLE
更改单个表的设置。
答案 1 :(得分:0)
pg_repack仍然不允许减小RDS中TOAST Segments的大小。 在RDS中,我们无法使用超级用户权限运行pg_repack,我们必须使用“ --no-superuser-check”选项。有了它,它将无法访问pg_toast。*表。