Kapitel 8: MySQL-Tab ellentypen 515
• Der Abschnitt SYNC INFO berichtet reservierte Semaphore, wenn Sie InnoDB mit UNIV_
SYNC_DEBUG kompilieren, definiert in ‘univ.i’.
• Der Abschnitt SYNC ARRAY INFO berichtet Threads, die auf ein Semaphor warten, und
Statistiken, wie viele Male Threads ein Spin oder ein Warten auf einem Mutex o der
einem Lese-/Schreibe-Sperr-Semaphor ben¨otigten. Eine große Anzahl auf Semaphore
wartender Threads kann ein Ergebnis von Festplatten-Ein- und -Ausgaben oder Kon-
fliktproblemen innerhalb von InnoDB sein. Konflikte k¨onnen durch starke Parallelen
von Anfragen oder durch Probleme des Betriebssystems beim Thread Scheduling her-
vorgerufen werden.
• Der Abschnitt CURRENT PENDING FILE I/O’S listet anh¨angige Datei-Ein- und
-Ausgabeanforderungen auf. Eine große Anzahl davon zeigt an, dass die Auslastung
Festplatten-Ein- und -Ausgabe-gebunden ist.
• Der Abschnitt BUFFER POOL gibt statistische Informationen ¨uber gelesene
und geschriebene Seiten. Aus diesen Zahlen k¨onnen Sie errechnen, wie viele
Daten-Datei-Ein- und Ausgaben Ihre Anfragen aktuell durchf¨uhren.
8.5.10 Implementation des Multiversionings
Weil InnoDB eine multiversionierte Datenbank ist, muss es Informationen ¨uber alte Versio-
nen von Zeilen im Tabellenplatz (Tablespace) aufb ewahren. Diese Informationen werden in
einer Datenstruktur gespeichert, die wir in Anlehnung an eine analoge Struktur in Oracle
Rollback-Segment nennen.
InnoDB f¨ugt jeder Zeile, die in der Datenbank gespeichert wird, intern zwei Felder hinzu.
Ein 6 Byte großes Feld enth¨alt den Transaktions-Identifikator der letzten Transaktion, die
die Zeile eingef ¨ugt oder aktualisiert hat. Ein L¨oschen wir intern als eine Aktualisierung be-
handelt, wobei ein spezielles Bit in die Zeile eingef¨ugt wird, um sie als gel¨oscht zu markieren.
Jede Zeile enth¨alt ausserdem ein 7 Byte großes Feld, das Roll-Zeiger genannt wird. Der Roll-
Zeiger zeigt auf einen R¨uckg¨angig-Log-Datensatz, der in das Rollback-Segment geschrieben
wird. Wenn die Zeile aktualisiert wurde, enth¨alt der R¨uckg¨angig-Log-Datensatz die In-
formationen, die notwendig sind, um den Inhalt der Zeile wieder herzustellen, bevor sie
aktualisiert wurde.
InnoDB benutzt die Informationen im Rollback-Segment, um die R¨uckg¨angig-Operationen
durchzuf¨uhren, die bei einem Transaktions-Rollback notwendig sind. Diese Informatio-
nen benutzt es auch daf¨ur, um fr¨uhere Informationen einer Zeile beim Konsistenten Lesen
aufzubauen.
R¨uckg¨angig-Logs im Rollback-Segment lassen sich in Logs f¨ur Einf¨ugen und f¨ur Aktu-
alisieren unterteilen. Einf¨uge-R¨uckg¨angig-Logs werden nur f¨ur Transaktions-Rollbacks
ben¨otigt und k¨onnen verworfen werden, sobald die Transaktion a/jointfilesconvert/293675/bgeschickt ist (commit).
Aktualisierungs-R¨uckg¨angig-Logs werden auch f¨ur Konsistentes Lesens benutzt und
k¨onnen daher erst verworfen werden, wenn keine Transaktion mehr vorhanden ist, f¨ur die
InnoDB einen Schnappschuss zugewiesen hat, dessen Informationen beim Konsistenten
Lesen ben¨otigt werden k¨onnten, um daraus eine fr¨uhere Version der Datenbank-Zeile
aufzubauen.
Sie m¨ussen daran denken, Ihre Transaktionen regelm¨aßig abzuschicken (commit), auch die
Transaktionen, die nur Konsistentes Lesens ausf¨uhren. Ansonsten kann InnoDB Daten aus
Comentarios a estos manuales