Utilizzo dei file di log WAL del database PostgreSQL

Datastream utilizza il log delle transazioni WAL (Write Ahead Log) di PostgreSQL per leggere gli stream PostgreSQL. Il log viene archiviato in file WAL sul server di database. Ogni record nel log WAL rappresenta una singola modifica ai dati effettivi in una delle tabelle del database.

Imposta i parametri di configurazione per i file WAL di PostgreSQL

Ti consigliamo di applicare le seguenti impostazioni di configurazione al database PostgreSQL:

  • max_slot_wal_keep_size: imposta questo parametro (disponibile solo per PostgreSQL 13 e versioni successive) per limitare la quantità di spazio di archiviazione utilizzata dallo slot di replica. Questo è particolarmente importante per le transazioni che richiedono molto tempo, che, in casi estremi, possono portare le dimensioni del file WAL a occupare l'intero spazio di archiviazione e a causare l'arresto anomalo del database.

  • statement_timeout: imposta questo parametro su un valore selezionato per ridurre la latenza causata da transazioni di lunga durata. Puoi anche utilizzare statement_timeout come misura precauzionale alternativa per i database che non supportano max_slot_wal_keep_size.

  • wal_sender_timeout: imposta questo parametro su 0 (per disattivare il timeout) o su un valore maggiore o uguale a 10 minuti.

Se prevedi di creare più di 10 stream o se il numero di slot di replica logica utilizzati da altre risorse oltre al numero di stream pianificati supera 10, assicurati di modificare i seguenti parametri:

  • max_replication_slots: aumenta il valore di questo parametro, a seconda del numero di slot di replica impostati per il database (è necessario un slot di replica per stream). Puoi impostare max_replication_slots solo all'avvio del server.

  • max_wal_senders: aumenta il valore di questo parametro in modo che sia superiore al valore del parametro max_replication_slots. Puoi impostare max_wal_senders solo quando avvii il server.

Ottimizzare i file di log WAL

Per evitare una latenza elevata degli stream e una crescita rapida delle dimensioni dei file log WAL quando replichi i dati da un'origine PostgreSQL, ti consigliamo di applicare le seguenti precauzioni:

  • Evita operazioni di grandi dimensioni e di lunga durata perché possono aumentare notevolmente le dimensioni del file WAL.
  • Utilizza le tabelle UNLOGGED o TEMPORARY durante le operazioni collettive.
  • Controlla la configurazione WAL e valuta la possibilità di ridurre la frequenza dei checkpoint. Per ulteriori informazioni, consulta la sezione Configurazione WAL.
  • Controlla se sono presenti operazioni DELETE di grandi dimensioni e valuta la possibilità di sostituirle con operazioni TRUNCATE. In questo modo, puoi ridurre notevolmente i dati dei file WAL, ma devi fare attenzione perché Datastream non esegue la replica delle operazioni TRUNCATE.

Passaggi successivi