我生成了一个21 MB左右的转储文件:
pg_dump --format=tar --verbose --file=database.backup mydatabase
当我在Windows上导入此文件时:
pg_restore --dbname mydatabase --verbose database.backup
这需要1个小时.
在Ubuntu 10.10 64位盒子上做同样的事,大约需要7个小时!
当然我在谈论相同的硬件规格(Dell Studio XPS).相同的RAM,cpu等
在这两种情况下,我都使用Postgresql 8.4.7的开箱即用配置.
也许发行版配置不同……
也许只是windows发行版正在做的一些优化?
额外信息:
在Windows 7上 – > NTFS.在Ubuntu 10.10上 – > EXT4
当我做
pg_dump --format=tar --verbose --file=workspace/work/dumps/loaded.backup mydb
我只用了5秒钟!如果我在一个空的新数据库上恢复:
pg_restore --dbname mydb-2 --verbose workspace/work/dumps/loaded.backup
我只用了10秒钟. (问题解决了……几乎)
似乎db人员使用不同的选项导出了原始转储.也许 – 插入选项?
使用原始转储的Windows和Ubuntu之间的巨大差异仍然困扰着我的想法.有什么想法吗?
对于21 MB的小型转储文件,即使一小时也很长.我们在大约30分钟内恢复2 GB压缩转储文件的数据库,但我们可能有更好的硬件;-)
你应该先阅读的内容:
http://www.postgresql.org/docs/8.4/static/populate.html
有条件的提示:
>首先启用持续时间记录所有语句,看看发生了什么
>增加shared_buffers,ubuntu 10.10上的默认值仅为24 MB,请参阅@L_403_0@以配置linux系统以接受更高的值
>使用–format = custom或-Fc进行转储.这是最好的选择
>您可以使用“-j”在多个cpu上运行pg_restore,但我猜您还有其他问题可以获得性能的最后一点
了解更多信息:
>阅读优秀的online documentation
>购买Postgresql 9.0 High Performance(不是关于你的问题,它只是一本经验丰富的Postgresql DBA的优秀书籍)