2 Stimmen

Mysql: Wann genau wird ein Ereignis im Binärprotokoll auf dem Master protokolliert?

Wann genau wird ein Ereignis auf dem Master (Update/Insert/Alter) im Binärprotokoll protokolliert?

  1. Wenn es auf dem Master-Server gestartet wurde, wird es ins Binärprotokoll geschrieben
  2. Wenn es auf dem Master begonnen und abgeschlossen wurde, wird es protokolliert

Im Speziellen würde ich gerne das Verhalten im Falle eines ALTER-Befehls wissen. Wenn die Antwort 1 ist, wird es in normalen Bedingungen nur aufgrund von auf dem Master gestarteten ALTER-Befehlen keinen Unterschied in der Latenz zwischen Master und Slave geben.

1voto

Marcus Adams Punkte 51234

Nicht-transaktionale Anweisungen werden sofort in das Binärprotokoll geschrieben. Für MySQL 5+ bedeutet dies, dass jede Anweisung gegen eine Speicher-Engine, die keine Transaktionen unterstützt, sofort geschrieben wird.

Sie sollten jedoch keine Anweisungen gegen eine nicht-transaktionale Tabelle innerhalb einer Transaktion ausführen.

Transaktionale Anweisungen werden in das Binärprotokoll geschrieben, wenn die Transaktion abgeschlossen ist. Für MySQL 5+ bedeutet dies, dass jede Anweisung gegen eine transaktionale Tabelle erfolgt.

Derzeit erzwingt ALTER TABLE einen impliziten Commit, sodass dies sofort in das Binärprotokoll geschrieben wird. Laut der MySQL Dokumentation:

Die binäre Protokollierung erfolgt unmittelbar nach Abschluss einer Anweisung, aber bevor irgendwelche Sperren freigegeben oder irgendwelche Commit durchgeführt werden. Dadurch wird sichergestellt, dass das Protokoll in der Reihenfolge der Ausführung protokolliert wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X