Datastream verwendet das PostgreSQL-Transaktionslog WAL (Write Ahead Log), um PostgreSQL-Streams zu lesen. Das Protokoll wird in WAL-Dateien auf dem Datenbankserver gespeichert. Jeder Datensatz im WAL-Log steht für eine einzelne Änderung an den tatsächlichen Daten in einer der Tabellen in der Datenbank.
Konfigurationsparameter für PostgreSQL-WAL-Dateien festlegen
Wir empfehlen, die folgenden Konfigurationseinstellungen für Ihre PostgreSQL-Datenbank zu verwenden:
max_slot_wal_keep_size: Legen Sie diesen Parameter (nur für PostgreSQL 13 und höher verfügbar) fest, um die Menge des vom Replikationsslot verwendeten Speichers zu begrenzen. Dies ist besonders wichtig für lang andauernde Transaktionen, die im Extremfall dazu führen können, dass die WAL-Dateigröße den gesamten Speicherplatz belegt und die Datenbank abstürzt.statement_timeout: Legen Sie für diesen Parameter einen ausgewählten Wert fest, um die Latenz zu verringern, die durch lang andauernde Transaktionen verursacht wird. Sie könnenstatement_timeoutauch als alternative Vorsichtsmaßnahme für Datenbanken verwenden, diemax_slot_wal_keep_sizenicht unterstützen.wal_sender_timeout: Legen Sie für diesen Parameter0(zum Deaktivieren des Zeitlimits) oder einen Wert von mindestens 10 Minuten fest.
Wenn Sie mehr als 10 Streams erstellen möchten oder die Anzahl der logischen Replikationsslots, die von anderen Ressourcen zusätzlich zur Anzahl der geplanten Streams verwendet werden, 10 überschreitet, müssen Sie die folgenden Parameter ändern:
max_replication_slots: Erhöhen Sie den Wert dieses Parameters entsprechend der Anzahl der für Ihre Datenbank festgelegten Replikations-Slots (Sie benötigen 1 Replikations-Slot pro Stream). Sie könnenmax_replication_slotsnur beim Start des Servers festlegen.max_wal_senders: Erhöhen Sie den Wert dieses Parameters, sodass er größer als der Wert des Parametersmax_replication_slotsist. Sie könnenmax_wal_sendersnur beim Starten des Servers festlegen.
WAL-Logdateien optimieren
Um eine hohe Latenz Ihrer Streams und ein schnelles Wachstum der Größe von WAL-Logdateien bei der Replikation von Daten aus einer PostgreSQL-Quelle zu vermeiden, sollten Sie die folgenden Vorsichtsmaßnahmen ergreifen:
- Vermeiden Sie große, lang andauernde Vorgänge, da sie die Größe Ihrer WAL-Datei erheblich erhöhen können.
- Verwenden Sie
UNLOGGED- oderTEMPORARY-Tabellen bei Batchvorgängen. - Prüfen Sie die WAL-Konfiguration und erwägen Sie, die Häufigkeit von Checkpoints zu verringern. Weitere Informationen finden Sie unter WAL-Konfiguration.
- Suchen Sie nach großen
DELETE-Vorgängen und ersetzen Sie sie gegebenenfalls durchTRUNCATE-Vorgänge. Dadurch kann die Datenmenge in WAL-Dateien erheblich reduziert werden. Sie müssen jedoch vorsichtig sein, da DatastreamTRUNCATE-Vorgänge nicht repliziert.