Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum ist ein mysqldump mit Einzeltransaktion konsistenter als einer ohne?

Da sich der Dump in einer Transaktion befindet, erhalten Sie eine konsistente Ansicht aller Tabellen in der Datenbank. Dies lässt sich wahrscheinlich am besten durch ein Gegenbeispiel erklären. Angenommen, Sie sichern eine Datenbank mit zwei Tabellen, Orders und OrderLines

  1. Du startest den Dump ohne eine einzige Transaktion.
  2. Ein weiterer Prozess fügt eine Zeile in die Orders ein Tabelle.
  3. Ein anderer Prozess fügt eine Zeile in die OrderLines ein Tabelle.
  4. Der Dump verarbeitet die OrderLines Tabelle.
  5. Ein weiterer Prozess löscht die Orders und OrderLines Aufzeichnungen.
  6. Der Dump verarbeitet die Orders Tabelle.

In diesem Beispiel hätte Ihr Dump die Zeilen für OrderLines , aber nicht Orders . Die Daten wären in einem inkonsistenten Zustand und würden bei der Wiederherstellung fehlschlagen, wenn zwischen Orders ein Fremdschlüssel vorhanden wäre und OrderLines .

Wenn Sie es in einer einzigen Transaktion gemacht hätten, hätte der Dump weder die Reihenfolge noch die Zeilen (aber es wäre konsistent), da beide eingefügt und dann gelöscht wurden, nachdem die Transaktion begonnen hatte.