我定期保存并恢复一个用于测试的小型PostgreSQL数据库。测试结果是定期更新其数据,然后必须进行新的转储,并定期使用转储在定义良好的状态重新创建数据库。
我注意到转储(使用pg_dump -Fc database)只需几秒钟,但恢复(pg_restore -d database)只需一分钟。这听起来很奇怪。我希望这两个任务的时间大致相同(假设这两个任务都是I/O限制的)。
恢复有什么问题吗?我能让它快点吗?或者恢复时间比转储时间长得多,这是正常的吗?(如果是,那为什么?)
转储文件通常有3-4 MiB;数据库管理系统是PostgreSQL V8.4,运行在Ubuntu下带有1 Ubuntu的Pentium4 3 3GHz上。
发布于 2011-03-02 12:30:47
索引的内容不是备份的一部分,而是索引的定义。这只需要几个字节。当在还原期间创建索引并对所有数据进行索引时,它将大得多。这将需要时间,但这取决于你的情况有多少时间。
pg_恢复确实有并发恢复的选项(从8.4版开始),请使用--jobs=number-of-jobs
发布于 2011-03-02 11:12:17
为了进行还原,数据库必须做很多额外的工作:
一些事情立刻浮现在脑海中:
不过,不确定这是否相当于时间差。
https://serverfault.com/questions/242137
复制相似问题