Heim  >  Artikel  >  Datenbank  >  Einführung in das Transaktionslernen von MySQL-InnoDB

Einführung in das Transaktionslernen von MySQL-InnoDB

coldplay.xixi
coldplay.xixinach vorne
2021-01-02 09:41:071894Durchsuche

MySQL-Video-Tutorial Die Kolumne stellt das Lernen von InnoDB-Dingen vor

Eigenschaften von Dingen (ACID )Einführung in das Transaktionslernen von MySQL-InnoDB

Atomizität

Konsistenz

Isolation

Haltbarkeit
  • Art der Sache
  • Flache Dinge

  • Flache Dinge mit Speicherpunkten aufkleben

Verschachtelte Transaktionen in der Kette von Dingen

Verteilte Transaktionen
  • Implementierung von Dingen
  • Wiederherstellen und Rückgängigmachen von Redo
  • Wiederherstellen: Stellen Sie die Atomizität, Haltbarkeit und Physik der Dinge sicher. Protokolle werden grundsätzlich nacheinander geschrieben. Rückgängig machen: Stellen Sie die Konsistenz von sicher Dinge, logische Protokolle, Rückgängig wird ein Wiederherstellen generieren, wird für Dinge-Rollback und MVCC, zufälliges Lesen und Schreiben verwendet Protokollpuffer -> Dateisystem-Cache-> (fsync) Festplattendatei
  • innodb_flush_log_at_trx_commit

    0: Master-Thread schließt das Schreiben auf die Festplatte ab
  • 1: Standardmäßig muss jede Transaktion fsync sein
  • 2: In den Dateisystem-Cache schreiben, tun fsync nicht ausführen

  • Protokollblock

512 Bytes stimmen mit der Größe des Festplattenbergbereichs überein und stellen sicher, dass das Protokollschreiben atomar ist und kein doppeltes Schreiben erforderlich ist? Technologie



ist unterteilt in 512 - 12 -8 = 492

Redo-Log-Header: 12 Bytes

Redo-Log-Inhalt: Redo-Log-Ende: 8 Bytes

LOG_BLOCK_HAR_NO [4 Bytes]: Protokollblock Am Standort des Protokollpuffer

LOG_BLOCK_HAR_DATA_LEN [2 Bytes]: die vom Protokollblock belegte Größe
LOG_BLOCK_FIRST_REC_GROUP [2 Bytes]: der Offset des ersten Protokolls

LOG_BLOCK_CHECKPOINT_NO [4 Bytes]: der Prüfpunkt, als es zuletzt geschrieben wurde. Der Wert von Byte 4? ?

Log-Gruppe


bestehend aus mehreren Redo-Log-Dateien

Redo-Log-Datei

Redo-Log-FormatEinführung in das Transaktionslernen von MySQL-InnoDB




redo_log_type: Art des Redo-Logs

space: Tabellenbereichs-ID

page_no : Seitenversatz


LSN (Log-Sequenznummer)

8 Bytes, monoton ansteigendBedeutung:

Gesamtzahl der Redo-Log-Schreibvorgänge

Prüfpunktposition

Version der Seite

Einführung in das Transaktionslernen von MySQL-InnoDBRückgängig machen

Segment rückgängig machen:

(128) Rollback-Segment > (1024) Rückgängig-Segment im gemeinsam genutzten Tabellenbereich, Transaktionsparallelität ist auf 128*1024 begrenzt

Einführung in das Transaktionslernen von MySQL-InnoDB

Gruppen-Commit

Isolationsebene der Dinge

READ UNCOMMIT: Die Abfrageanweisung wird nicht gesperrt und nicht festgeschriebene Zeilen können gelesen werden (Dirty Read)

READ COMMIT: Den Datensätzen werden nur Datensatzsperren hinzugefügt Zwischen Datensätzen werden keine Lückensperren hinzugefügt. Daher können neue Datensätze in der Nähe der gesperrten Datensätze eingefügt werden. Wenn die Abfrageanweisung also mehrmals verwendet wird, können unterschiedliche Ergebnisse erzielt werden (nicht wiederholbares Lesen). EPEATABLE READ: Lesen Derselbe Datenbereich wird mehrmals als Snapshot der ersten Abfrage zurückgegeben, es können jedoch Phantom-Lesevorgänge (Phantom Read) auftreten.
SERIALIZABLE: InnoDB löst das Problem von Phantom-Lesevorgänge;

Dirty Reads: In einer Transaktion werden nicht festgeschriebene Daten anderer Transaktionen gelesen.
Nicht wiederholbare Lesevorgänge: In einer Transaktion wird zweimal auf den gleichen Zeilendatensatz zugegriffen, mit unterschiedlichen Ergebnissen.

Phantom-Lesen: Wenn in einer Transaktion Datensätze im gleichen Bereich gelesen werden, fügen andere Transaktionen diesem Bereich neue Datensätze hinzu.

Einführung in das Transaktionslernen von MySQL-InnoDBDer Grund für das nicht wiederholbare Lesen liegt darin, dass die Speicher-Engine unter der Isolationsstufe READ COMMITED beim Abfragen von Datensätzen keine Zeilensperren hinzufügt und den Datensatz mit der ID = 3 sperrt.

Verteilte Dinge

XA

Ressourcenmanager: Bietet Methoden für den Zugriff auf Transaktionsressourcen.

Transaktionsmanager: Koordiniert verschiedene Dinge, die an globalen Dingen beteiligt sind

Einführung in das Transaktionslernen von MySQL-InnoDB

Das obige ist der detaillierte Inhalt vonEinführung in das Transaktionslernen von MySQL-InnoDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen