pg_restore demorando muito mais que pg_dump

8

Estou salvando regularmente e depois restaurando um pequeno banco de dados PostgreSQL, que é usado para testes. Seus dados são atualizados regularmente como resultado de testes, então um novo dump deve ser feito e os dumps são regularmente usados para recriar o banco de dados em um estado bem definido.

Eu observei que o dump (usando pg_dump -Fc database ) leva apenas alguns segundos, mas a restauração ( pg_restore -d database ) leva cerca de um minuto. Isso parece estranho. Eu esperava que os dois tomassem o mesmo tempo (assumindo que ambas as tarefas são ligadas a E / S).

Existe algum problema com a restauração? Eu poderia fazer isso mais rápido? Ou é normal que a restauração demore muito mais do que o despejo? (E se sim, então por quê?)

O arquivo de despejo geralmente tem cerca de 3-4 MiB; o DBMS é o PostgreSQL V8.4, rodando em um Pentium4 3GHz com 1GiB de RAM no Ubuntu Linux.

    
por sleske 02.03.2011 / 12:05

2 respostas

8

O conteúdo de um índice não faz parte do backup, apenas a definição do índice. E isso levará apenas alguns bytes. Quando o índice é criado durante a restauração e todos os dados são indexados, ele será muito maior. Isso levará tempo, mas depende da sua situação quanto tempo.

pg_restore tem uma opção para restauração simultânea (a partir da versão 8.4), use --jobs=number-of-jobs

    
por 02.03.2011 / 13:30
2

Para uma restauração, o banco de dados precisa fazer muito trabalho adicional:

Algumas coisas vêm à mente imediatamente:

  • Escrever é mais lento que ler
  • A análise da entrada leva tempo
  • Atualização de índices e outras estruturas internas
  • Manutenção da integridade referencial

Não tenho certeza se isso equivale a essa diferença de horário, no entanto.

    
por 02.03.2011 / 12:12