2012-11-22 71 views
3

最近,我创建了一个用于生产的新Heroku应用程序,并使用从暂存数据库中取出的备份填充了它的数据库。在Heroku上备份/加载后PostgreSQL数据库大小减少

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

的第一个数据库,在这里我把备份从为360 MB的,并填充新的数据库只有290 MB的。

在备份/加载过程中没有显示错误。并从两个数据库中进行备份会产生相同的备份文件大小(大约40 MB)。

项目工作正常,并且这两个应用程序看起来完全一样,但我担心,我可能失去了一些数据会在未来造成麻烦。

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

此外,第一数据库没有连接到第一个实例(因为它是从Postgres的管理页面添加的,而不是从应用程序的资源页面)和新的数据库附加到新的应用程序。

在此先感谢

回答

4

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

其原因是它的MVCC系统。每当你在数据库中创建任何记录时,它都会创建该记录的另一个“版本”,而不是重写前一个记录。这个“过时”的记录将被VACUUM过程删除,当时不需要这些记录。

所以,当你从备份中恢复你的数据库,它没有任何“死”的记录,其大小为少。

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

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