【发布时间】:2023-03-30 10:30:01
【问题描述】:
我已经超过了 heroku 上 postgres 数据库的 GB 限制。
我发现了一个(非常大的)已弃用的表并运行了Plot.delete_all。现在 17k 行的表中有 0 行。
我现在可以看到行号有差异,但 GB 没有差异。这是之前的数据大小 (37.73 GB)
heroku pg:info
=== HEROKU_POSTGRESQL_ONYX_URL, DATABASE_URL
Plan: Hobby-basic
Connections: 2/20
PG Version: 11.14
Created: 2019-03-09 12:13 UTC
Data Size: 37.73 GB/10.00 GB (Write access revoked; Database deletion imminent)
Tables: 6
Rows: 2649450/10000000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
Continuous Protection: Off
Add-on: postgresql-spherical-39745
之后(仍然是 37.73 GB,尽管行数减少了 16610):
heroku pg:info
=== HEROKU_POSTGRESQL_ONYX_URL, DATABASE_URL
Plan: Hobby-basic
Connections: 3/20
PG Version: 11.14
Created: 2019-03-09 12:13 UTC
Data Size: 37.73 GB/10.00 GB (Write access revoked; Database deletion imminent)
Tables: 6
Rows: 2649450/10000000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
Continuous Protection: Off
Add-on: postgresql-spherical-39745
Plot.delete_all 将删除 plots 表中的所有行,但是否足以释放 db 占用这些记录的磁盘空间?
我尝试过的
-
heorku restart没有区别。 - 我等了(60 分钟),但由于heroku's background workers update these statistics typically no less frequently than every 5-10 minutes 我认为读数准确且膨胀仍然存在
- 我运行了postgress
CLUSTER命令,但我认为它只对之前已集群的表执行操作,因此它完成得很快,似乎没有做任何事情,也没有影响磁盘空间) - 我尝试了
VACCUM,但它很快就完成了,似乎并没有影响磁盘空间。 - 我尝试了
VACCUM FULL- 这花了大约 1-2 小时并且成功了!查看结果here。
我还没有尝试过,但可以尝试
- 我可能会编辑应用程序代码以删除整个模型,然后是
rake db:migrate等,这应该会完全删除不必要的表格。
【问题讨论】:
标签: ruby-on-rails heroku