我经常保存并稍后恢复一个用于testing的小型PostgreSQL数据库。 其数据由于testing而定期更新,然后必须进行新的转储,并定期使用转储重新创build处于明确定义状态的数据库。
我注意到,转储(使用pg_dump -Fc database )只需要几秒钟,但恢复( pg_restore -d database )大约需要一分钟。 这似乎很奇怪。 我可以预料,两者都需要大致相同的时间(假定这两个任务都是I / O绑定的)。
还原有问题吗? 我可以让它更快吗? 或者恢复花费的时间比转储还要正常吗? (如果是,那为什么?)
转储文件通常有大约3-4 MiB; DBMS是PostgreSQL V8.4,运行在Pentium4 3GHz,在Ubuntu Linux下有1GiB RAM。
索引的内容不是备份的一部分,只是索引的定义。 这只会占用几个字节。 在还原过程中创build索引并将所有数据编入索引时,索引将会更大。 这将需要时间,但这取决于你的情况多less时间。
pg_restore没有并发恢复的选项(从版本8.4开始),使用--jobs=number-of-jobs
对于还原,数据库必须做很多额外的工作:
有些事情马上想到:
不知道这是否等于时间差。