Я регулярно сохраняю, а затем восстанавливаю небольшую базу данных PostgreSQL, которая используется для тестирования. Его данные регулярно обновляются в результате тестов, затем должен быть сделан новый дамп, и эти дампы регулярно используются для воссоздания базы данных в четко определенном состоянии.
Я заметил, что дамп (используя pg_dump -Fc database
) занимает всего несколько секунд, но восстановление (pg_restore -d database
) занимает около минуты. Это кажется странным. Я ожидал, что и то, и другое займёт примерно одинаковое время (при условии, что обе задачи связаны с вводом-выводом).
Есть ли проблема с восстановлением? Могу ли я сделать это быстрее? Или это нормально, что восстановление занимает намного больше времени, чем дамп? (И если да, то почему?)
Размер файла дампа обычно составляет около 3-4 МиБ; СУБД - это PostgreSQL V8.4, работающая на Pentium4 3 ГГц с 1 ГБ оперативной памяти под Ubuntu Linux.
Содержимое индекса не является частью резервной копии, это только определение индекса. И это займет всего несколько байтов. Когда индекс создается во время восстановления и все данные проиндексированы, он будет намного больше. Это займет время, но сколько времени зависит от вашей ситуации.
pg_restore есть возможность одновременного восстановления (начиная с версии 8.4), используйте --jobs=number-of-jobs
Для восстановления база данных должна проделать еще много работы:
На ум сразу приходят некоторые вещи:
Не уверен, что это составляет разницу во времени.