使用cat将大数据库转储加载到PostgreSQL中

我有一对非常大(〜17 GB)的数据库转储,我想加载到postgresql 9.3中。 在安装完数据库包之后,学习或多或less地使用它们,以及在各种StackExchange页面(特别是这个问题 )上摆弄一下,看起来像我使用的正确的命令是这样的:

cat mydb.pgdump | psql mydb 

由于转储的格式。我的机器有16 GB的内存,我不熟悉cat命令,但我知道我的RAM已用尽99%,数据库需要一段时间才能加载。 我的机器不是没有响应的悬挂点; 我可以在其他terminal窗口中运行其他命令,并让它们在一个合理的剪辑执行,但我想知道如果cat是最好的方式来pipe文件,或者如果别的更有效? 我担心的是,也许cat可能会用尽所有的内存,所以数据库没有太多的工作,扼杀其performance。 但我是新来思考像这样的内存问题,不知道我是不是在担心什么。

现在我想起来,这似乎更多的是关于cat和它的内存使用情况的问题。 如果有一个更合适的论坛这个问题,请让我知道。 谢谢!

我担心的是,也许猫可能会用尽所有的内存,所以数据库没有太多的工作,扼杀其performance。

事实并非如此。 cat只是将数据从inputstream到输出。

无论如何,这是没有必要的

 psql dbname < mydb.pgdump 

我的RAM是99%用尽和数据库需要一段时间来加载。

你怎么测量“99%排气”? 我想知道如果你没有排除缓冲区/caching。 显示free -h的输出(或者如果失败,则返回free -m )。

一般来说,为了更快的数据库恢复,我build议采用自定义格式( -Fc )转储,然后使用并行pg_restore而不是psql