InnoDB
verwendet simulierte, asynchrone
Festplattenein- und -ausgaben (E/A) und erzeugt mehrere Threads
für E/A-Operationen wie beispielsweise Read-ahead.
Es gibt zwei Read-ahead-Heuristiken in
InnoDB
:
Beim sequenziellen Read-ahead schickt
InnoDB
, wenn es bemerkt, dass ein Segment
im Tablespace ein sequenzielles Zugriffsmuster aufweist, im
Voraus einen Batch Leseoperationen auf Datenbankseiten an
das E/A-System.
Beim willkürlichen Read-ahead schickt
InnoDB
, wenn es bemerkt, dass ein Bereich
im Tablespace im Begriff ist, vollständig in den Bufferpool
eingelesen zu werden, die restlichen Leseoperationen an das
E/A-System.
InnoDB
verwendet eine neue Technik namens
Doublewrite, um Dateien auf die
Festplatte zurückzuschreiben. Dadurch wird die Recovery nach
einem Betriebssystemabsturz oder einem Stromausfall sicherer und
die Leistung der meisten Unix-Varianten besser, da nicht mehr so
viele fsync()
-Operationen nötig sind.
Doublewrite sorgt dafür, dass InnoDB
Seiten
nicht gleich in die Datendatei, sondern zuerst in einen
zusammenhängenden Tablespace-Bereich namens Doublewrite-Puffer
schreibt. Erst wenn dieser Vorgang abgeschlossen ist, werden die
Seiten in ihre angestammten Plätze in der Datendatei
geschrieben. Stürzt das Betriebssystem mitten im Schreiben
einer Seite ab, kann InnoDB
später bei der
Recovery eine gute Kopie der Seite im Doublewrite-Puffer finden.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.