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.
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.
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.