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: Mit diesem Parameter (nur für PostgreSQL 13 und höher verfügbar) können Sie die Menge des vom Replikationsslot verwendeten Speichers 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 Ihre WAL-Konfiguration und erwägen Sie, die Checkpoint-Häufigkeit 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 Menge der WAL-Dateidaten erheblich reduziert werden. Sie müssen jedoch vorsichtig sein, da DatastreamTRUNCATE-Vorgänge nicht repliziert.