Uau. Incrível número de perguntas. Vou tentar abordar alguns, mas esta resposta ainda não está completa.
how to determine where the bottleneck is.
Use top
primeiro para ver o que está acontecendo durante o despejo. Inspecione o uso da CPU do processo, o status do processo. D
significa "esperando por E / S".
Is the poor performance caused by heavy I/O operations?
Sim, provavelmente.
Is it caused by table locking issues?
Talvez. você pode usar pg_stat_activity
system view para ver o que está acontecendo no postgres durante o despejo.
Maybe it is a memory issue?
Muito improvável.
The output of the pg_dump command is piped to the gzip command. Is it sequential, i.e. entire dump is placed in the memory (swapping problem?)
Não. O gzip é um compressor de blocos que trabalha no modo stream, não mantém todas as entradas na memória.
and then compressed or concurrent (i.e. gzip compresses what it gets and waits for more)?
Sim, comprime bloco a bloco, gera e aguarda mais.
May it be caused by some other factor?
Sim.
As far as I understand things, the dump can't take too much time because of database integrity. There are table write locks, etc. What can I make to limit the problems (or delay it, considering database growth).
A duração do dump não tem efeito na integridade do dump. A integridade é garantida usando uma transação com o nível de isolamento repeatable read por todo o processo pg_dump. Não há bloqueios de gravação de tabela.
Is it already time to learn about more advanced database configurations? The system works ok, when database backups are not performed, but maybe the db dumping issue is a first symptom of incoming problems?
Nunca é tarde demais. Comece com link .