Login
Newsletter
Werbung

Mi, 7. April 2010, 19:00

Jet Profiler für MySQL

Datenbankproblemen auf der Spur

Langsame, schlecht durchdachte oder schlicht viel zu oft ausgeführte Abfragen einer Datenbank sind unter anderem die Hauptgründe für langsame oder ausgelastete Server. Abhilfe verspricht Jet Profiler für das freie RDBMS MySQL. Neben der Anzeige der Statuswerte will die Applikation auch schlecht geschriebene Abfragen finden und Tipps zur Behebung der Probleme liefern.

Allgemein

Hauptfenster des MySQL-Profilers »Jet Profiler«

Mirko Lindner

Hauptfenster des MySQL-Profilers »Jet Profiler«

Eine Datenbank gehört mittlerweile zum festen Bestandteil vieler Online- und Offline-Projekte. Kaum eine Anwendung, die eine Vielzahl an Daten verarbeiten muss, kann es sich deshalb leisten, die teilweise recht knapp bemessenen Kräfte eines Servers nicht optimal auszunutzen. Mit einer steigenden Anzahl von Nutzern wird deshalb auch für relativ kleine Projekte das Thema der optimalen Abfragen (Queries) von besonderer Bedeutung, denn bei falscher Nutzung generiert eine Aktion des relationalen Datenbankmanagementsystems (RDBMS) weit mehr Operationen, als der Anwender auf den ersten Blick vermuten würde. Schwächen eines Systems rechtzeitig zu erkennen gehört deshalb zu den Pflichten jedes gewissenhaften Programmierers, der keine bösen Überraschungen auf einem produktiven System erleben will.

Hier will der Jet Profiler der schwedischen Firma Polaricon AB für das freie RDBMS MySQL Abhilfe schaffen. Die Applikation überwacht, vereinfacht gesagt, einen oder mehrere laufende MySQL-Server und ermittelt die am meisten benutzten Tabellen sowie die am längsten ausgeführten SQL-Abfragen. Das Tool ist in zwei verschiedenen Ausführungen erhältlich – einer kostenlosen und einer professionellen Version. Wir stellen Ihnen beide vor.

Funktionsweise

Das Tool bindet sich durch den MySQL-Standardport an die Datenbank und aggregiert periodisch Informationen über Anwender, Abfragen und Tabellen einer bestimmten Datenbank. Spezielle Änderungen am Server sind dabei nicht notwendig. Jet Profiler benötigt allerdings Zugriffsrechte für diverse Operationen, will man nicht mit dem root-Passwort arbeiten. Gesammelte Daten werden sowohl grafisch als auch tabellarisch angezeigt. Je länger die Anwendung dabei im Hintergrund arbeitet, desto genauer und aussagekräftiger werden die ausgewerteten Informationen.

Nach dem Start des Jet Profilers werden zunächst die Verbindungsdaten des Servers abgefragt. Dabei kann hier schon überprüft werden, ob die Anwendung die Daten des Servers korrekt empfangen kann. Sind die wenigen Daten eingegeben, kann mit der eigentlichen Auswertung begonnen werden.

Bereits nach wenigen Sekunden liefert Jet Profiler erste Resultate. Sichtbar werden sie auf zwei verschiedene Arten. Während im oberen Bereich grafisch Informationen zur Auslastung des Servers oder der generierten Netzwerklast, der am häufigsten genutzten Tabellen oder Schemata, Zustände der Datenbank, Anzahl der Verbindungen oder Abfragen (Queries, SELECTs, UPDATEs, INSERTs), Zahl der Sperren, Read- und Write-Zugriffe, Tabellenscans, Caches oder Replikations-Geschwindigkeit dargestellt werden, liefert der untere Teil in tabellarischer Form detaillierte Angaben. Speziell zeigt der Profiler hier die am häufigsten oder längsten ausgeführten Anfragen (Top Queries), die am häufigsten genutzten Tabellen (Top Tables) oder Datenbanken (Top Schemas), die Zustände des Servers (Top States), die Anwender (Top Users), langsame Abfragen (Slow Queries) und gesperrte Abfragen (Locked Queries).

Auswertung

Detaillierte Beschreibung einer Abfrage im »Explain«-Fenster

Mirko Lindner

Detaillierte Beschreibung einer Abfrage im »Explain«-Fenster

Jedes Diagramm im oberen Bereich und die darin enthaltenen Daten des Profiling-Fensters sind genau erklärt. Praktisch: Selektiert der Anwender einen Teilbereich des Fensters, zoomt die Anzeige hinein. Folglich passen sich auch andere Diagramme sowie die tabellarische Anzeige der Auswahl an. Erspäht man also in einem Profiling, das über einen längeren Zeitraum durchgeführt wurde, eine Lastspitze, so reicht es, diese zu selektieren, um die in diesem Zeitraum ausgeführten Abfragen zu sehen.

Sehr gelungen und besonders praktisch ist die »Top Queries«-Liste. In dieser listet die Anwendung die am häufigsten oder am längsten ausgeführten Operationen des Servers auf. Im laufenden Profiling-Prozess verändert sich die Anzeige kontinuierlich, so dass die längsten Abfragen immer im oberen Bereich zu sehen sind. Eine Besonderheit der Anzeige stellt ein Rating dar, das von »very good« bis zu »very bad« reicht und grafisch weitere Hinweise anzeigt. Klick man das Rating an, erklärt der Profiler, warum er eine Abfrage als schlecht einstuft, und gibt Tipps zur Korrektur. Dabei bedient sich die Anwendung unter anderem der »EXPLAIN«-Operation von MySQL. Bemängelt werden unter anderem Scans über eine komplette Tabelle, die oftmals durch das Setzen von sinnvollen Indexen korrigiert werden können, exzessive Filesort-Operationen oder temporäre Tabellen.

Von diesen Angaben flankiert kann der Anwender noch im Detailfenster die Abfrage verändern und erneut vom Profiler untersuchen lassen. Dabei versucht die Anwendung, die früheren Gegebenheiten zu berücksichtigen, und bewertet die neue Abfrage erneut. Darüber hinaus lassen sich die Abfragen exportieren und zum Beispiel in dem MySQL-eigenen Query Profiler ausführen, um weitere Informationen über die Abfrage zu erhalten.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung