从表中删除数据后增加 Google Cloud SQL 上的数据存储

时间:2021-05-01 07:18:20

标签: postgresql google-cloud-sql

在删除大量表数据后,不同表存储中约 3500 万条记录从 41GB 跃升至 89GB,这与预期完全相反。知道会发生什么吗?

数据库是 PostgreSQL。

1 个答案:

答案 0 :(得分:2)

来自docs

<块引用>

在 PostgreSQL 中,行的 UPDATE 或 DELETE 不会立即删除该行的旧版本。这种方法对于获得多版本并发控制(MVCC,参见第 13 章)的好处是必要的:当行版本仍然可能对其他事务可见时,不得删除它。但最终,任何事务都不再对过时或已删除的行版本感兴趣。然后必须回收它占用的空间以供新行重用,以避免磁盘空间需求的无限增长。这是通过运行 VACUUM 来完成的。

此外,Write-Ahead Logging 是大小增加的原因,因为 PostgreSQL 在您运行删除操作时创建了额外的日志。

PostgreSQL 自动执行例程 autovacuum,应该能够释放空间。如果您想手动回收空间,您可以使用 VACUUMVACUUM FULL 来完成,您可以阅读有关 here 的更多信息并决定哪个更适合您。

相关问题