Kapitel 6: MySQL-Optimierung 329
gut unter hoher Last) oder im Zusammenhang mit dem Betriebssystem / den Bibliotheken.
Das meiste davon w¨are SEHR viel einfacher zu beheben, wenn die Systeme nicht bereits in
einer Produktionsumgebung liefen.
Um solcherlei Probleme zu vermeiden, sollten Sie einige Anstrengung darauf
verwenden, Ihre gesamte Applikation unter der schlimmstm¨oglichen Last zu
benchmarken! Hierf¨ur k¨onnen Sie Super Smack benutzen, das Sie hier erhalten:
http://www.mysql.com/Downloads/super-smack/super-smack-1.0.tar.gz. Wie der
Name nahelegt, kann es Ihr System auf die Knie zwingen, wenn Sie das wollen. Achten Sie
daher darauf, es nur auf Entwicklungssystemen zu verwenden.
6.2 SELECTs und andere Anfragen optimieren
Zun¨achst etwas, das alle Anfragen betrifft: Je komplexer das Berechtigungssystem, das Sie
einrichten, desto mehr Overhead bekommen Sie.
Falls Sie noch keinerlei GRANT-Statements ausgef¨uhrt haben, optimiert MySQL die
Berechtigungspr¨ufung zum Teil. Wenn Sie also sehr hohe Zugriffszahlen haben,
kann es einen Zeitvorteil darstellen, Grants zu vermeiden. Ansonsten k¨onnen mehr
Berechtigungspr¨ufungen in einem gr¨oßeren Overhead resultieren.
Wenn Sie Probleme bei einer bestimmten MySQL-Funktion haben, k¨onnen Sie den Zeitbe-
darf jederzeit wie folgt mit dem MySQL-Client feststellen:
mysql> select benchmark(1000000,1+1);
+------------------------+
| benchmark(1000000,1+1) |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.32 sec)
Das Ergebnis zeigt, dass MySQL 1.000.000 +-Operationen in 0,32 Sekunden auf einer
PentiumII-400MHz-Maschine ausf¨uhren kann.
Alle MySQL-Funktionen sollten sehr optimiert sein, aber es mag einige Ausnahmen
geben und benchmark(schleifenzaehler,ausdruck) ist ein großartiges Werkzeug, um
herauszufinden, ob das das Problem bei Ihrer Anfrage darstellt.
6.2.1 EXPLAIN-Syntax (Informationen ¨uber ein SELECT erhalten)
EXPLAIN tabelle
oder EXPLAIN SELECT select_optionen
EXPLAIN tabelle ist ein Synonym f¨ur DESCRIBE tabelle oder SHOW COLUMNS FROM
tabelle.
Wenn Sie einem SELECT-Statement das Schl¨usselwort EXPLAIN voran stellen, erkl¨art MySQL
explains, wie er das SELECT ausf¨uhren w¨urde, indem Informationen dar¨uber gemacht wer-
den, wie Tabellen verkn¨upft (Join) werden und in welcher Reihenfolge.
Mit der Hilfe von EXPLAIN k¨onnen Sie erkennen, wo Sie Tabellen Indexe hinzuf¨ugen m¨ussen,
um ein schnelleres SELECT zu erhalten, das Indexe benutzt, um die Datens¨atze zu finden.
Comentarios a estos manuales