在Heroku上备份/加载后,PostgreSQL数据库大小较少

时间:2012-11-22 04:10:53

标签: database postgresql heroku

最近我为生产创建了一个新的Heroku应用程序,并使用我从登台数据库中获取的备份填充了它的数据库。

问题是Heroku的Postgres网页上显示的两个数据库的数据库大小不同!

我从中获取备份的第一个数据库是360 MB,填充的新数据库只有290 MB。

备份/加载过程中未显示任何错误。从两个数据库中获取备份会产生相同的备份文件大小(大约40 MB)。

该项目工作正常,两个应用程序看起来完全一样,但我担心我可能丢失了一些可能在将来引起麻烦的数据。

更多信息:我在两个应用上使用相同的生产数据库计划。

此外,第一个数据库未附加到第一个实例(因为它是从Postgres管理页面添加的,而不是从App的资源页面添加的),并且新数据库已附加到新应用程序。

提前致谢

2 个答案:

答案 0 :(得分:5)

postgresql DB在使用时可以消耗更多空间。

其原因在于其MVCC系统。每当您UPDATE数据库中的任何记录时,它都会创建此记录的另一个“版本”,而不是重写之前的记录。 {“{1}}进程将删除此”过时“记录,而不需要这些记录。

因此,当您从备份恢复数据库时,它没有任何“死”记录,并且其大小较小。

详情http://www.postgresql.org/docs/current/static/mvcc.htmlhttp://www.postgresql.org/docs/current/static/sql-vacuum.html

P.S。你不必担心它。 Postgresql将自动处理VACUUM

答案 1 :(得分:0)

看看这是否有帮助:PostgreSQL database size increasing

还尝试单独测量每个表的大小,对于那些看到差异的表,比较记录计数:postgresql total database size not matching sum of individual table sizes