database - 在 RDS 实例上收缩 pg_toast

标签 database postgresql amazon-rds vacuum autovacuum

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

Autovacuum 已打开,但由于 autovacuum/VACUUM FREEZE 不回收空间并且 VACUUM FULL 进行独占锁定,我不确定最好的方法是什么。

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

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

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

enter image description here enter image description here

Autovacuum 设置

enter image description here

当前为特定 pg_toast 运行的 autovacuum 进程的结果。它可能会有所帮助。 enter image description here

最佳答案

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 更改单个表的设置。

关于database - 在 RDS 实例上收缩 pg_toast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53624270/

相关文章:

php - 将图像保存在公用文件夹中而不是存储 laravel 5

sql-server - 10k 租户和 Multi-Tenancy 数据库设计

mysql 一个还是多个数据库?

Java map 与后端数据库。哪个更适合速度和关系的多线程?

mysql - 20-30 个并发 mysql 连接导致 RDS 飙升至 80% 以上

amazon-rds - 无法建立与 jdbc 的连接 :mysql communication link failure

node.js - 如何使用 NodeJs 连接到 docker compose 中的 postgres?

sql - 为什么 MAX() 没有显示最高数字?

postgresql - 如何在给定时区将时间戳字段转换为 ISO 8601 字符串?

amazon-web-services - 将数据库放在 EC2 或 RDS 上?