
512 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
4. Machen Sie Ihre Log-Dateien Groß, selbst so Groß wie den Puffer-Pool. Wenn InnoDB
seine Log-Dateien vollgeschrieben hat, muss es die ver¨anderten Inhalte des Puffer-Pools in
einem Checkpoint auf Platte schreiben. Kleine Log-Dateien verursachen daher unn¨otige
Festplatten-Schreibzugriffe. Der Nachteil großer Log-Dateien liegt darin, dass die Wieder-
herstellungszeit l¨anger wird.
5. Ausserdem sollte der Log-Puffer recht Groß sein, sagen wir 8 MB.
6. (Relevant from 3.23.39 up.) In einigen Versionen von Linux und Unix ist das
Zur¨uckschreiben von Dateien auf Platte (flush) mit dem Unix-fdatasync und anderen
¨ahnlichen Methoden ¨uberraschend langsam. InnoDB benutzt vorgabem¨aßig die
fdatasync-Funktion. Wenn Sie mit der Datenbank-Schreib-Performance nicht zufrieden
sind, k¨onnen Sie versuchen, die innodb_flush_method in ‘my.cnf’ auf O_DSYNC zu setzen,
obwohl O DSYNC auf den meisten Systemen langsamer zu sein scheint.
7. Wenn Sie Daten in InnoDB importieren, stellen Sie sicher, dass MySQL autocommit=1
nicht angeschaltet hat, denn dann b en¨otigt jedes Einf¨ugen ein Zur¨uckschreiben des Logs
auf Platte (flush). Setzen Sie vor Ihre SQL-Importdatei die Zeile
set autocommit=0;
und danach
commit;
Wenn Sie die ‘mysqldump’-Option --opt benutzen, erhalten Sie Dump-Dateien, die sich
sehr schnell auch in eine InnoDB-Tabelle importieren lassen, selbst ohne sie in die oben
erw¨ahnten set autocommit=0; ... commit;-Wrapper zu verpacken.
8. H¨uten Sie sich vor großen Rollbacks beim Einf¨ugen von Massendaten: InnoDB
benutzt den Einf¨uge-Puffer, um beim Einf¨ugen Festplatten-Ein- und -Ausgaben zu
sparen, doch beim entsprechenden Rollback wird kein solcher Mechanismus benutzt.
Ein Festplatten-gebundenes Rollback kann die 30-fache Zeit des entsprechenden
Einf¨ugevorgangs in Anspruch nehmen. Es hilft nicht, den Datenbankprozess zu killen, weil
der Rollback erneut starten wird, wenn die Datenbank hochf¨ahrt. Die einzige M¨oglichkeit,
ein aus dem Ruder gelaufenes Rollback loszuwerden, besteht darin, den Puffer-Pool zu
erh¨ohen, so dass das Rollback CPU-gebunden wird und damit schnell l¨auft, oder indem
die gesamte InnoDB-Datenbank gel¨oscht wird.
9. Seien Sie auch vor anderen großen Festplatten-gebundenen Operationen auf der Hut.
Benutzen Sie DROP TABLE oder TRUNCATE (ab MySQL-4.0), um eine Tabelle zu l¨oschen,
nicht DELETE FROM tabelle.
10. Benutzen Sie das mehrzeilige INSERT, um den Kommunikations-Overhead zwischen
Client und Server zu verringern, wenn Sie viele Zeilen einf¨ugen m¨ussen:
INSERT INTO tabelle VALUES (1, 2), (5, 5);
Dieser Tipp gilt nat¨urlich f¨ur jeden Tabellentyp, nicht nur f¨ur InnoDB.
8.5.9.1 Der InnoDB-Monitor
Ab Version 3.23.41 beinhaltet InnoDB den InnoDB-Monitor, der Informationen ¨uber den
internen Zustand von InnoDB ausgibt. Wenn er angeschaltet ist, veranlasst der InnoDB-
Monitor den MySQL-Server ‘mysqld’, etwa alle 15 Sekunden Daten an die Standardaus-
gabe auszugeben (Hinweis: der MySQL-Client gibt nichts aus). Diese Daten sind n¨utzlich,
Comentarios a estos manuales