Wie kann ich die Write-Ahead-Protokollierung für nur eine Tabelle in PostgreSQL verhindern?

StackOverflow https://stackoverflow.com/questions/38090

  •  09-06-2019
  •  | 
  •  

Frage

Ich denke über einen Log-Versand nach Write-Ahead-Protokolle (WAL) in PostgreSQL, um eine Warm-Standby-Datenbank zu erstellen.Allerdings habe ich eine Tabelle in der Datenbank, die jeden Tag eine große Menge an INSERT/DELETE-Operationen erhält, bei der mir der Schutz der darin enthaltenen Daten jedoch egal ist.Um die Menge der produzierten WALs zu reduzieren, habe ich mich gefragt: Gibt es eine Möglichkeit zu verhindern, dass Aktivitäten auf einer Tabelle in den WALs aufgezeichnet werden?

War es hilfreich?

Lösung

Leider glaube ich nicht, dass es das gibt.Die WAL-Protokollierung erfolgt auf Seitenebene, die viel niedriger als die Tabellenebene ist und nicht einmal weiß, welche Seite Daten aus welcher Tabelle enthält.Tatsächlich wissen die WAL-Dateien nicht einmal, welche Seiten zu welchen gehören Datenbank.

Sie könnten erwägen, Ihre Tabelle mit hoher Aktivität auf eine völlig andere Instanz von PostgreSQL zu verschieben.Das scheint drastisch zu sein, aber ich kann mir keinen anderen Weg vorstellen, um zu vermeiden, dass diese Aktivität in Ihren WAL-Dateien angezeigt wird.

Andere Tipps

Bin auf diese alte Frage gestoßen, auf die es jetzt eine bessere Antwort gibt.Mit Postgres 9.1 wurden „Unlogged Tables“ eingeführt. Dabei handelt es sich um Tabellen, die ihre DML-Änderungen nicht in WAL protokollieren.Weitere Informationen finden Sie in den Dokumenten, aber zumindest gibt es jetzt eine Lösung für dieses Problem.

Sehen Warten auf 9.1 – UNLOGGED-Tabellen von depesz, und die 9.1 Dokumente.

Um eine Option für meine eigene Frage anzubieten.Es gibt temporäre Tabellen - „Temporäre Tabellen werden automatisch am Ende einer Sitzung oder optional am Ende der aktuellen Transaktion gelöscht (siehe ON COMMIT unten)“ – was meiner Meinung nach keine WALs generiert.Dennoch ist dies möglicherweise nicht ideal, da die Tabellenerstellung und das Design im Code erfolgen müssen.

Ich würde darüber nachdenken zwischengespeichert für Anwendungsfälle wie diesen.Sie können die Last sogar auf mehrere günstige Maschinen verteilen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top