Transaktionen pro Sekunde in einer Datenbank (zB PostgreSQL)

1608
IamIC

Ich verweise auf 2 Dokumentationsseiten auf der Website von PostgreSQL: # 1 und # 2 . Daraus geht hervor, dass das Transaktionsprotokoll fünfmal pro Sekunde auf die Festplatte geschrieben wird (wal_writer_delay = 200ms), und es wird auch angezeigt, dass das RDBMS eine Transaktion nicht als erfolgreich gemeldet hat, bis sie in die Protokolldatei geschrieben wurde, seit synchronous_commit = on Standard.

Dies würde uns einen theoretischen Spitzenwert von 5 meldepflichtigen Schreibvorgängen pro Sekunde geben, wenn jedes in seiner eigenen Transaktion ausgeführt wird, was häufig der Fall ist. Der Grund dafür ist, dass das Protokoll nicht schneller auf die Festplatte geschrieben wird.

Wir sehen jedoch Geschwindigkeit in Tausenden pro Sekunde.

Wie funktioniert das?

Um es klar zu sagen, ich spreche davon, dass sich jeder Schreibvorgang in seiner eigenen Transaktion befindet (Standardeinstellung). Ich weiß, warum Massenbeilagen auf diese Frage nicht zutreffen.

0

1 Antwort auf die Frage

1
Craig Ringer

Commits werden in die Warteschlange gestellt und alle Flushs werden gelöscht, wenn die WAL geschrieben wird.

So erhalten Sie große Gruppen von Commits, die fünfmal pro Sekunde schreiben.

Diesen Teil kenne ich. Aber ich frage mich, warum es berichtet, dass es als "sicher gespeichert" mit einer höheren Rate gemeldet wird, als wenn dies nicht möglich ist, soweit ich das sehe. IamIC vor 9 Jahren 0
Messen Sie die Verzögerung zwischen der Ausgabe des Festschreibungsbefehls und der Rückgabe. Es ist durchschnittlich die Hälfte der Verzögerung Ihrer Schreibmaschine und ziemlich gleichmäßig verteilt. Weil sich Commits in Warteschlangen befinden. Ihr Fehler geht davon aus, dass nur ein Datensatz geschrieben werden kann, wenn der Wal-Autor aufwacht. Das ist nicht der Fall. Craig Ringer vor 9 Jahren 0
Ich weiß, dass Tausende geschrieben werden können, wenn der WAL-Autor aufwacht. Wenn ich eine Schleife mit Inserts von beispielsweise C # oder Delphi starte, werden mehrere tausend Male pro Sekunde zurückgegeben. Dies ist der Teil, den ich nicht verstehe. IamIC vor 9 Jahren 0
Siehe vorheriger Kommentar. Messen Sie, wie lange jedes Commit dauert. Sollte avg wal writer delay sein / 2. Wenn Ihr eigenständiger ausführbarer Testcode nicht angezeigt wird, protokollieren Sie die vollständige Konfiguration und Testläufe. Craig Ringer vor 9 Jahren 0