O Datastream usa o registo de transações WAL (Write Ahead Log) do PostgreSQL para ler streams do PostgreSQL. O registo é armazenado em ficheiros WAL no servidor da base de dados. Cada registo no registo WAL representa uma única alteração aos dados reais numa das tabelas na base de dados.
Defina parâmetros de configuração para ficheiros WAL do PostgreSQL
Recomendamos que aplique as seguintes definições de configuração à sua base de dados PostgreSQL:
max_slot_wal_keep_size
: defina este parâmetro (disponível apenas para o PostgreSQL 13 e superior) para limitar a quantidade de armazenamento usado pelo espaço de replicação. Isto é particularmente importante para transações de longa duração que, em casos extremos, podem fazer com que o tamanho do ficheiro WAL ocupe todo o armazenamento e bloqueie a base de dados.statement_timeout
: defina este parâmetro para um valor selecionado para reduzir a latência causada por transações de longa duração. Também pode usarstatement_timeout
como medida de precaução alternativa para bases de dados que não suportammax_slot_wal_keep_size
.wal_sender_timeout
: defina este parâmetro como0
(para desativar o limite de tempo) ou para um valor igual ou superior a 10 minutos.
Se planear criar mais de 10 streams ou o número de slots de replicação lógica usados por outros recursos, além do número de streams planeadas, exceder 10, certifique-se de que modifica os seguintes parâmetros:
max_replication_slots
: aumente o valor deste parâmetro, consoante o número de slots de replicação definidos para a sua base de dados (precisa de 1 slot de replicação por stream). Só pode definirmax_replication_slots
no início do servidor.max_wal_senders
: aumente o valor deste parâmetro para que seja superior ao valor do parâmetromax_replication_slots
. Só pode definirmax_wal_senders
quando iniciar o servidor.
Otimize os ficheiros de registo WAL
Para evitar a latência elevada das suas streams e o crescimento rápido no tamanho dos ficheiros de registo WAL ao replicar dados de uma origem PostgreSQL, considere aplicar as seguintes precauções:
- Evite operações grandes de execução prolongada, pois podem aumentar significativamente o tamanho do ficheiro WAL.
- Use tabelas
UNLOGGED
ouTEMPORARY
durante as operações em lote. - Verifique a configuração do WAL e pondere reduzir a frequência dos pontos de verificação. Para mais informações, consulte o artigo Configuração da WAL
- Verifique se existem operações
DELETE
grandes e pondere substituí-las por operaçõesTRUNCATE
. Isto pode reduzir significativamente os dados dos ficheiros WAL. No entanto, tem de ter cuidado, porque o Datastream não replica as operaçõesTRUNCATE
.
O que se segue?
- Saiba mais sobre o PostgreSQL como uma origem.
- Saiba mais sobre a configuração de uma base de dados PostgreSQL de origem.