Carregando um grande banco de dados no PostgreSQL usando cat

3

Eu tenho um par de despejos de banco de dados muito grandes (~ 17 GB) que quero carregar no postgresql 9.3. Depois de instalar os pacotes do banco de dados, aprender mais ou menos como usá-los e mexer um pouco nas várias páginas do StackExchange (particularmente esta questão ), parece que um comando adequado para eu usar é algo como:

cat mydb.pgdump | psql mydb

por causa do formato em que o dump está. Minha máquina tem 16 GB de RAM, e eu não estou familiarizado com o comando cat , mas sei que minha memória RAM está 99% esgotada e o banco de dados está demorando para carregar. Minha máquina não é responsiva ao ponto de pendurar; Eu posso executar outros comandos em outras janelas de terminal e tê-los executar em um clipe razoável, mas estou querendo saber se cat é a melhor maneira de canalizar no arquivo ou se algo é mais eficiente? Minha preocupação é que talvez cat possa estar usando toda a RAM para que o banco de dados não tenha muito com o que trabalhar, afogando seu desempenho. Mas eu sou novo em pensar sobre problemas de RAM como este e não sei se estou preocupado com nada.

Agora que penso nisso, isso parece ser mais uma questão sobre cat e seu uso de memória do que qualquer outra coisa. Se houver um fórum mais apropriado para esta questão, por favor me avise. Obrigado!

    
por RussH 02.06.2014 / 21:28

1 resposta

0

My concern is that maybe cat could be using up all the RAM so the database doesn't have much to work with, throttling its performance.

Não é. cat apenas transmite dados da entrada para a saída.

É desnecessário aqui mesmo, use

psql dbname < mydb.pgdump

my RAM is 99% exhausted and the database is taking a while to load.

Como você está medindo "99% exhausado"? Eu estou querendo saber se você está deixando de excluir buffers / cache. Mostre a saída de free -h (ou se isso falhar com um erro, free -m ).

Em geral, para uma restauração mais rápida do banco de dados, recomendo que você faça um dump de formato personalizado ( -Fc ) e use o pg_restore em vez de psql .

    
por 03.06.2014 / 06:46