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

MySQL-Transaktionsjournal

Hier sind Sie definitiv auf dem richtigen Weg.

Wann immer InnoDB eine Transaktion durchführt, die festgeschrieben werden muss, wird dies als zweiphasiges Festschreiben ausgeführt. Die Transaktion wird zuerst in diese Protokolle geschrieben. Dann werden sie von dort übernommen.

Dies hilft sehr im Falle eines MySQL-Absturzes oder Server-Absturzes.

Wenn Sie mysql neu starten, werden alle nicht festgeschriebenen Einträge in ib_logfile0 und ib_logfile1 als Teil der Wiederherstellung nach einem Absturz von InnoDB wiederholt, um InnoDB in einen harmonischen Zustand zu versetzen (Dies sind konsistente und dauerhafte Teile von ACID-Konformität )

Wenn Sie ib_logfile0 und ib_logfile1 löschen und mysql starten, gehen alle nicht festgeschriebenen Transaktionen, die diese Dateien enthielten, verloren. Wenn die Protokolldateien während des Wiederherstellungszyklus nach einem Absturz fehlen, werden sie basierend auf innodb_log_file_size Einstellung.

Weitere Informationen finden Sie in der MySQL-Dokumentation Erklärung von InnoDB .

@karatedog der MVCC-Teil von InnoDB findet innerhalb des System-Tablespace statt, besser bekannt als ibdata1. Welche Daten auch immer vor dem Beginn einer Transaktion zu sein scheinen, werden aufgezeichnet, damit andere, die auf die erforderlichen Zeilen zugreifen, einen Blick auf die Daten haben, bevor irgendwelche Aktualisierungen auferlegt werden. Dies ermöglicht ein sogenanntes REPEATABLE-READ. Dies fällt unter das I der ACID-Compliance, ich meine Isolation. Ich habe dazu Beiträge im DBA StackExchange in Bezug auf verschiedene Szenarien geschrieben, in denen die Transaktionsisolation gut, schlecht oder hässlich ist.

Was MyISAM betrifft, so ist die Absturzwiederherstellung nicht automatisch. Es stürzt ziemlich leicht ab . Deshalb der SQL-Befehl REPAIR TABLE existiert. Aus diesem Grund ist auch das MySQL-Dienstprogramm myisamchk hat das -r Option zum Ausführen von REPAIR TABLE für MyISAM-Tabellen, die nicht online sind.

MariaDB und Aria Es gab Versuche, eine absturzsichere Speicher-Engine als Ersatz für MyISAM zu entwickeln.