Mal wieder ne kleine Update-Notiz: das beliebte und äußerst nützliche Tool phpMyAdmin wurde nach einigen Updates und Bugfixes auf die Version 2.11 gehoben. Es enthält folgende Updates und Erweiterungen:
- Das Erstellen von MySQL-Views aufgrund von Query-Ergebnissen
- Die Verwaltung von Triggern, Prozeduren und Funktionen
- Die Unterstützung für MySQL-Query-Profiling (siehe unten) und
- Eine verbesserte Oberfläche für Datenbank-Massenhoster
Ein neues Super-Feature von MySQL ist das Query-Profiling. Es hilft, die Performance von SQL-Abfragen genauer unter die Lupe zu nehmen. So bekommt man eine prima Übersicht, wie sich die Ausführungszeit auf die einzelnen Schritte verteilt, die MySQL benötigt, um die SQL Abfrage auszuführen. Hier gibts gleich mal eine kleine Einführung:
Zunächst muss man das Profiling einschalten:
mysql> set profiling=1; Query OK, 0 rows affected (0.00 sec)
Für jede SQL-Abfrage wird jetzt ein Profil angelegt, das die detailierten Ausführungszeiten enhält. Die Profil-Übersicht lässt man sich mit
mysql> show profiles;
anzeigen. Die ausgegebene Tabelle ist leider zu breit fürs PHP Blogger Layout, daher nur kurz die Beschreibung, was man genau sieht: Die Query-ID, Gesamtausführungszeit der SQL-Abfrage und die SQL Abfrage an sich. Um sich nun die Details der Ausführungsperformance anzeigen zu lassen, ruft man folgendes Kommando auf:
mysql> show profile for query 1;
Das Ergebnis beinhaltet unter anderem die Ausführungszeiten für folgende Informationen:
- Initialisierung
- Tabellen öffnen
- System lock
- Tabellen lock
- Optimierung
- Statistik
- Vorbereitung
- Ausführung
- Daten senden
- Ende
- Abfragen Ende
- Speicher für Elemente freigeben
- Tabellen schließen
- Langsame Query loggen
Je nach Art der Abfrage (SELECT/ALTER/SHOW/usw) können auch andere Informationen und Stopps beinhaltet sein. Aber auch die CPU Auslastung kann man sich anzeigen lassen:
mysql> show profile cpu for query 4;
Aber auch andere Parameter können übergeben werden, die die Ausgabe filtern oder erweitern:
- ALL
- BLOCK IO
- CONTEXT SWITCHES
- IPC
- PAGE FAULTS
- SOURCE
- SWAPS
Standardmäßig ist das Profiling bei jeder MySQL Session ausgeschaltet und um Performance Probleme zu vermeiden, sollte das auf Live-Servern auch so bleiben. Ausserdem können maximal für die letzten 15 SQL-Abfragen Performance-Profile abgerufen werden.
Wer sich gerne mehr Informationen über das Profiling anschauen möchte, der sollte sich mal im MySQL Handbuch umschauen oder den super interessanten Artikel über das Query-Profiling von Robin Schumacher durchlesen, von dort stammen auch die hier verwendeten Beispiel-Queries…

















