【问题标题】:Shrinking pg_toast on RDS instance缩小 RDS 实例上的 pg_toast
【发布时间】:2019-05-06 13:09:45
【问题描述】:

我有一个 Postgres 9.6 RDS 实例,它每天增长 1GB。我们对与 pg_toast 相关的关系进行了一些优化,但 pg_toast 的大小没有改变。

Autovacuum 已开启,但由于 autovacuum/VACUUM FREEZE 不会回收空间,而 VACUUM FULL 会执行独占锁定,所以我不再确定最好的方法是什么。

表中的数据是我们用户体验的核心,尽管遵循this 方法是有道理的,但它会带走我们的用户期望在真空完整过程中看到的数据。

这里还有哪些其他选项可以缩小 pg_toast?

这里有一些关于表格大小的数据。您可以在前两张图片中看到,关系 scoring_responsescore 是与 pg_toast 关联的关系。

自动吸尘设置

该特定 pg_toast 当前正在运行的 autovacuum 进程的结果。它可能会有所帮助。

【问题讨论】:

    标签: database postgresql amazon-rds vacuum autovacuum


    【解决方案1】:

    VACUUM (FULL) 是 PostgreSQL 提供的唯一减小表大小的方法。

    臃肿的 TOAST 表对您来说是个问题吗? TOAST 表总是通过 TOAST 索引访问,因此膨胀不应该是性能问题。

    我知道有两个项目提供表重组,只有一个短 ACCESS EXCLUSIVE 锁定,即 pg_squeezepg_repack,但您可能无法在 Amazon RDS 数据库中使用它们。

    为了防止问题变得更糟,您应该首先尝试将受影响表的autovacuum_vacuum_cost_limit 提高到 2000,如果这不起作用,请将autovacuum_vacuum_cost_delay 降低到 0。您可以使用 ALTER TABLE更改单个表的设置。

    【讨论】:

    【解决方案2】:

    pg_repack 仍然不允许减少 RDS 中 TOAST 段的大小。 在 RDS 中,我们不能以超级用户权限运行 pg_repack,我们必须使用“--no-superuser-check”选项。这样,它将无法访问 pg_toast.* 表。

    【讨论】:

      猜你喜欢
      • 2013-12-11
      • 1970-01-01
      • 2017-12-15
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 2019-03-20
      相关资源
      最近更新 更多