Re: pg_restore - Performance ao criar FKs

From: Richard Klaumann <richard(dot)klaumann(at)gmail(dot)com>
To: Tiago José Adami <adamitj(at)gmail(dot)com>
Cc: pgsql-pt-geral(at)lists(dot)postgresql(dot)org
Subject: Re: pg_restore - Performance ao criar FKs
Date: 2023-05-16 17:35:45
Message-ID: CAEChWk+v-ZKk3Occb0pNiOCcEYn6bdzmDrOQjVXvAikThzVo1A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-pt-geral

Boa tarde Tiago, desde já obrigado pela ajuda.

Sim, eu criei o backup via pg_dump.
Quanto a configuração de autovacuum_max_workers cheguei a configurar como
8(total de VCPUs).
Já com relação a autovacuum_naptime, nosso padrão é 1s(o minimo).
Em ambientes de produção, trabalhamos com
autovacuum_vacuum_insert_threshold e autovacuum_analyze_threshold
configurados com 1000. Para este teste, cheguei a configura-los como 10.
Apesar de tudo, dificilmente vejo mais de dois workers executando
autovacuum ao mesmo tempo.

Mesmo no ambiente com CentOS 8, não vejo a execução do autovacuum passar de
dois workers, mas neste ambiente não tenho o mesmo problema com as FKs.

Grato.

Em ter., 16 de mai. de 2023 às 14:19, Tiago José Adami <adamitj(at)gmail(dot)com>
escreveu:

> Olá, Richard.
>
> Em seg., 15 de mai. de 2023 às 18:03, Richard Klaumann
> <richard(dot)klaumann(at)gmail(dot)com> escreveu:
> >
> > Boa tarde equipe,
> > estou migrando dados entre as versões 11 e 15 e estou enfrentando alguns
> problemas quanto a criação de FKs ao restaurar algumas das FKs.
> >
> > Realizo um backup de mais de 2800 tabelas partindo do PostgreSQL 11
> rodando em um servidor com CentOS 8.
>
> Suponho que esteja usando o pg_dump para criar um arquivo no formato
> custom, correto?
>
> > Ao realizar o restore no PostgreSQL 15 Ubuntu 22 o restore dos dados é
> feito com a mesma eficiência do restore na versão 11(apenas para
> comparação).
> > No entanto, quando o banco 15 inicia a criação de algumas FKs o create é
> extremamente lento.
> >
> > Cenário:
> > SO Ubuntu 22.4
> > 8 VCPUs
> > 18GB Ram
> > PG 15.2
> >
> > Ex:
> > "Tabela_1" com 264.736 de registros. PK Composta por 4 colunas, sendo 3
> integer e uma numeric(25,0)
> > "Tabela_2" com 6.077.761 de registros.
> >
> > Ao tentar criar a FK entre a "Tabela_2" e a "Tabela_1" com o banco 11 a
> FK é criada em poucos segundos. Já ao tentar criar a FK no banco 15 o
> comando fica em execução durante várias horas.(VMs idênticas)
> >
> > Obs: Se eu encerrar a criação da FK executada pelo pg_restore, e
> executar manualmente um vacuum analyze sobre a "Tabela_1" e criando a FK
> manualmente a criação tambem é feita em poucos segundos.
> > Obs2: pg_restore executado com -j 4, quando não utilizo o "-j" os
> restores das versões 11 e 15 possuem tempos idênticos.
> >
> > No pg_restore da versão 11 as FKs são criada ao final do restore dos
> dados.
> > Ex:
> > Criação tabela_1;
> > Criação tabela_2;
> > Restore tabela_1;
> > Restore tabela_2;
> > Criação índices tabela_1;
> > Criação índices tabela_2;
> > Criação fk tabela_2;
> >
> > Já no 15 a criação das fks é feita da seguinte maneira:
> > Ex:
> > Criação tabela_1;
> > Criação tabela_2;
> > Restore tabela_1;
> > Criação índices tabela_1;
> > Restore tabela_2;
> > Criação índices tabela_2;
> > Criação fk tabela_2;
> >
> > Tenho a impressão que não há tempo hábil para a execução do vacuum
> analyze, o qual agiliza a criação das FKs.
> >
> > Alguém já passou por alguma situação parecida?
>
> Eu não tive problemas com o pg_restore usando vários jobs, mas vou dar
> um tiro no escuro aqui com o que suponho ser o motivo.
>
> Tente aumentar o parâmetro autovacuum_max_workers para 6 (o dobro, já
> que o padrão é 3).
> Apenas para testes, eu mudaria também o autovacuum_naptime para 10
> segundos. Os demais parametros de threshold do autovaccum estão de
> acordo com a quantidade de registros das tabelas.
>
> Você precisará reiniciar o serviço para ativá-los, antes de executar o
> restore.
>
> Até onde eu me recordo (qualquer um fique à vontade para me corrigir
> caso eu esteja errado) os arquivos de dump não contém a chamada de
> VACUUM ANALYZE explícita, mas o autovacuum é executado.
>
> Tiago J. Adami
>

In response to

Browse pgsql-pt-geral by date

  From Date Subject
Next Message Douglas 2023-12-18 18:01:47 Tem algo errado com a minha query?
Previous Message Tiago José Adami 2023-05-16 17:19:24 Re: pg_restore - Performance ao criar FKs