In der Spalte „MySQL-Tutorial“ lernen Sie die Checkpoint-Technologie von InnoDB kennen.
Wir alle wissen, dass die Entstehung des Pufferpools dazu dient, die Lücke zwischen CPU- und Festplattengeschwindigkeit zu schließen, sodass wir beim Lesen und Schreiben der Datenbank keine Festplatten-E/A-Vorgänge ausführen müssen. Beim Pufferpool werden alle Seitenvorgänge zunächst im Pufferpool abgeschlossen. Wenn beispielsweise in einer DML-Anweisung ein Datenaktualisierungs- oder Löschvorgang durchgeführt wird, wird der Datensatz auf der Pufferpoolseite geändert. Da die Daten auf der Pufferpoolseite zu diesem Zeitpunkt neuer sind als die Daten auf der Festplatte wird als Dirty Page bezeichnet.
Wenn sich eine Seite ändert, wird die neue Seitenversion auf die Festplatte geleert , dann ist dieser Overhead sehr groß Die Daten können nicht wiederhergestellt werden
Write Ahead Log (Write-Ahead-Protokoll)Die WAL-Strategie löst das Problem des Datenverlusts, der durch Ausfallzeiten beim Aktualisieren von Seitendaten auf der Festplatte verursacht wird. Sie wird in relationalen Datenbanksystemen verwendet bieten Atomizitäts- und Haltbarkeitseigenschaften (zwei der ACID-Eigenschaften). Der Kernpunkt der WAL-Strategie istWenn ein Fehler auftritt und Speicherdaten verloren gehen, stellt InnoDB die Datenseiten des Pufferpools in den Zustand vor dem Absturz zurück, indem das Redo-Protokoll beim Neustart erneut abgespielt wird.
Es liegt auf der Hand, dass wir uns mit der WAL-Strategie zurücklehnen und entspannen können. Das Problem tritt jedoch erneut im Redo-Log auf:
Um die Aktualisierungsleistung verschmutzter Seiten zu lösen, wann und unter welchen Umständen verschmutzte Seiten aktualisiert werden sollten, wird die Checkpoint-Technologie verwendet.
1. Verkürzen Sie die Wiederherstellungszeit der Datenbank
Wenn die Datenbank inaktiv ist und wiederhergestellt wird, müssen nicht alle Protokollinformationen wiederholt werden. Weil die Datenseite vor Checkpoint zurück auf die Festplatte geleert wurde. Stellen Sie einfach das Redo-Log nach dem Checkpoint wieder her.
2. Wenn der Pufferpool nicht ausreicht, leeren Sie die verschmutzten Seiten auf die Festplatte.
Wenn der Pufferpoolspeicher nicht ausreicht, läuft die zuletzt verwendete Seite gemäß dem LRU-Algorithmus über Seite, dann muss ein Prüfpunkt erzwungen werden. Die fehlerhaften Seiten, bei denen es sich um neue Versionen der Seiten handelt, werden zurück auf die Festplatte geleert.
3. Wenn das Redo-Log nicht verfügbar ist, aktualisieren Sie die schmutzigen Seiten
Wie in der Abbildung gezeigt, ist das Redo-Log nicht verfügbar, da die aktuelle Datenbank für die zyklische Verwendung ausgelegt ist und daher nicht unendlich viel Speicherplatz bietet .
Wenn das Redo-Protokoll voll ist, werden alle Aktualisierungsanweisungen blockiert, da das System zu diesem Zeitpunkt keine Aktualisierungen akzeptieren kann.
Zu diesem Zeitpunkt muss die Generierung eines Checkpoints erzwungen werden und die Schreibposition muss nach vorne verschoben werden. Die schmutzigen Seiten innerhalb des Fortschrittsbereichs müssen auf die Festplatte geleert werden.
Checkpoint Wie viele verschmutzte Seiten werden jedes Mal auf die Festplatte geleert?
Woher bekommt Checkpoint jedes Mal schmutzige Seiten?
Wann wird Checkpoint ausgelöst?
Angesichts der oben genannten Probleme stellt uns die InnoDB-Speicher-Engine intern zwei Arten von Checkpoints zur Verfügung:
tritt auf, wenn die Datenbank heruntergefahren wird und alle fehlerhaften Seiten zurück auf die Festplatte geleert werden ist der Standardjob. Methode, Parameter innodb_fast_shutdown=1
InnoDB-Speicher-Engine verwendet diesen Modus intern und löscht nur einen Teil der schmutzigen Seiten, anstatt alle schmutzigen Seiten zurück auf die Festplatte zu leeren. Was passiert? an FuzzyCheckpoint
schreibt fast jede Sekunde oder alle zehn Sekunden einen bestimmten Anteil der Seiten aus der Liste der schmutzigen Seiten im Pufferpool zurück auf die Festplatte.
Dieser Prozess ist asynchron, das heißt, die InnoDB-Speicher-Engine kann zu diesem Zeitpunkt andere Vorgänge ausführen und der Benutzerabfrage-Thread wird nicht blockiertBezieht sich auf die Situation, in der die Redo-Log-Datei nicht verfügbar ist. Zu diesem Zeitpunkt müssen die fehlerhaften Seiten aus der Liste der fehlerhaften Seiten ausgewählt werden 5.6, Benutzeranfragen werden nicht blockiert
MySQL-Tutorial
Das obige ist der detaillierte Inhalt vonVerstehen Sie die Checkpoint-Technologie von InnoDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!