Verwaltungstools und Performance-Messer für MySQL
Datenbankwerkzeuge

Big DataData & StorageNetzwerke

Bei der Verwaltung von MySQL-Datenbanken denkt man automatisch an PhpMyAdmin. Dieser Artikel verrät einige geniale Alternativen, die auf Spezialaufgaben weit besser zugeschnitten sind.

Der Klassiker

Verwaltungstools und Performance-Messer für MySQL

Bei den meisten Hostern ist PhpMyAdmin installiert, und auch auf dem eigenen Webserver kommt der Veteran unter den MySQL-Datenbankverwaltungen oft zum Einsatz. Dass PhpMyAdmin zum Synonym für die MySQL-Datenbankverwaltung geworden ist, verdankt es der für eine Web-Anwendung guten Bedienbarkeit und natürlich der Eigenschaft, kostenfrei verfügbar zu sein. Dennoch ist PhpMyAdmin nicht für jeden Einsatzzweck die optimale Lösung: PhpMyAdmin liefert beispielsweise keine Aussagen zum Status der Datenbank und zur Performance. Und da PhpMyAdmin komplett auf der Verbindung von HTML und PHP beruht, unterliegt die Bedienung den natürlichen Grenzen jeder Web-Anwendung.


Open Source

Verwaltungstools und Performance-Messer für MySQL

Diese Grenzen ein wenig aufzuweichen, hat sich FlashMyAdmin (www.flashmyadmin.org) auf die Fahne geschrieben. Die MySQL-Verwaltung verwendet zwar auch PHP, aber im Frontend Flash statt HTML. Dadurch sind Dinge wie Drag and Drop einfacher möglich, und das Neuladen der Seite entfällt. Letzteres lässt sich mittlerweile auch mit Hilfe von Ajax, sprich des XMLHttpRequest-Objekts, einsparen. Eine solche Lösung bietet der TurboDBAdmin (turboajax.com). Er basiert auf dem Ajax-Framework von Turboajax und hat sich von einem Proof of Concept hin zu einem eigenständigen Projekt entwickelt. Im Hintergrund werkelt auch dort PHP als serverseitige Technik.


Wurzeln

Verwaltungstools und Performance-Messer für MySQL

MySQL AB (www.mysql.com), die Firma hinter MySQL, bietet selbst ebenfalls Tools zur Datenbankverwaltung an. Im Repertoire sind neben einer Migrations-Software auch der MySQL Administrator zur Verwaltung und der MySQL Query Browser für SQL-Abfragen. Wie schon von MySQL gewohnt, gibt es beide unter einer Open-Source-Lizenz, der GPL, und als kommerzielle Variante. Letztere sollte der Kunde wählen, wenn er die Administrationswerkzeuge in die eigene Software integrieren möchte.

Der MySQL Administrator bietet zwar auch die Verwaltung von Datenbanken und Tabellen über den Bereich Catalogs. Seine Hauptaufgaben sind aber die Überwachung des MySQL-Servers, das Backup und die Nutzerverwaltung. Für die Überwachung gibt es ein eigenes Health-Monitoring und eine Übersicht über die aktuellen Verbindungen. Die Gesundheitsübersicht liefert Informationen, wie viele Verbindungen, wie viel Traffic und wie viele Abfragen gerade laufen. Außerdem haben Sie die Möglichkeit, dem Speicher beim Cachen zuzusehen und über Status- und System-Variablen die wichtigsten Kennzahlen zu überprüfen, die Sie ansonsten von Hand in der Konfigurationsdatei von MySQL setzen müssten.

Das ist natürlich nicht der Schlüssel zu besserer Performance. Es hilft aber, grundlegende Probleme zu entdecken. In Sachen Performance ebenfalls sehr hilfreich ist das Slow Log im Bereich Server Logs. Dort schreibt MySQL alle Anfragen hinein, die länger als eine bestimmte Sekundenzahl benötigen. Letztere lässt sich über die Variable long-query-time festlegen und hat den Standardwert 10. Sie finden sie beim Health-Monitoring unter System Variables und dort beim Eintrag Performance. Unter Logs aktivieren Sie mit log_slow_queries das Mitloggen von langsamen Abfragen.

Beim Backup können Sie einzelne Datenbanken und darin auch einzelne Tabellen auswählen und über die Optionen sogar Einfluss auf den SQL-Code nehmen. Die Nutzerverwaltung schließlich läuft deutlich schneller ab als mit PhpMyAdmin, da die Rechte für einzelne Datenbanken in nur einer Übersicht vergeben werden können.


Kommerziell

Verwaltungstools und Performance-Messer für MySQL

Neben den Werkzeugen von MySQL gibt es auch eine Menge an kommerziellen Alternativen zur MySQL-Verwaltung. Sehr einfach zu bedienen ist beispielsweise Navicat 2005 (www.navicat.com). In der Oberfläche sind nicht nur die Tabellen, sondern auch Datenbank-Views, Stored Procedures und Reports versammelt. Mit dem Zeitplan lässt sich recht einfach ein Batchprogramm entwerfen, und die Sicherung klappt auch auf Datenbankebene. Die Monitoring-Funktion ist nicht ganz so hübsch anzusehen wie die von MySQL Administrator. Sie enthält allerdings trotzdem alle benötigten Einstellungen: Der Server Monitor gewährt einen Blick auf die Prozessliste und den Status. Über die Variablen aktivieren Sie beispielsweise das Mitloggen von besonders langsamen Abfragen. Besonders umfangreich sind die Importmöglichkeiten: Von der Dbase-Datei über Text-Dateien bis zu Access-Datenbanken reicht hier die Spanne.

Navicat gibt es ohne Zahlung nur als Testversion. Andere kommerzielle Hersteller bieten eine Kombination aus abgespeckter Freeware-Version und kostenpflichtiger Professional oder Enterprise-Variante. Dazu zählen beispielsweise der EMS SQL Manager (www.sqlmanager.net) und SQLyog (www.webyog.com). Gerade Letzterer bietet in der Enterprise-Variante sehr viele Funktionen und unterstützt auch neuere MySQL-Funktionen wie Views und Stored Procedures. Diese Funktionen stehen in den Menüs nur zur Verfügung, wenn Sie die jeweilige MySQL-Version verwenden.


Reines Monitoring

Verwaltungstools und Performance-Messer für MySQL

Für das reine Monitoring von Anwendungen bieten sich neben den klassischen MySQL-Administrationswerkzeugen noch Monitoring-Spezialisten an. Eine Alternative ist der Manageengine Applications Manager (manageengine.adventnet.com). Da er allerdings für wesentlich mehr Anwendungen als nur MySQL geeignet ist, schlägt er mit knapp 600 Euro doch recht teuer zu Buche. Im Open-Source-Bereich gibt es auch einige Alternativen, die die Standardfunktionen von MySQL verwenden und eigene Auswertungen dazuliefern. Zwei Beispiele sind die Konsolenanwendungen MTop (sourceforge.net/projects/mtop) und Mytop (jeremy.zawodny.com/mysql/mytop). Allerdings hilft das beste Monitoring nicht, wenn beim Entwickeln grundlegende Fehler gemacht werden.

Fazit

MySQL-Verwaltung muss nicht zwangsläufig PhpMyAdmin bedeuten. Einige alternative Verwaltungswerkzeuge glänzen mit professionellen Zusatzfunktionen wie Monitoring und mit hoher Benutzerfreundlichkeit.


Know-how: Geschwindigkeit

Verwaltungstools und Performance-Messer für MySQL

MySQL integriert schon einige Möglichkeiten, um die Geschwindigkeit des Datenbankservers zu überwachen. Internet Professionell zeigt, wo Sie den Hebel ansetzen. Beispielsweise definieren Sie mit der MySQL-Systemvariablen log_slow_queries, ob besonders langsame Abfragen mitgeloggt werden. Am komfortabelsten legen Sie solche Einstellungen natürlich über ein Administrationswerkzeug wie MySQL Administrator oder Navicat fest. In diesen Programmen haben Sie auch die Möglichkeit, die Logfiles näher zu untersuchen. Aber unabhängig davon, ob Sie diese Komfortfunktionen verwenden oder MySQL über die Konsole bedienen, ist entscheidend, welche Lehren Sie daraus für Ihre Programmierung ziehen.

In der Praxis sollten Sie nicht mit der hohen Schule der Performance-Optimierung beginnen, sondern mit den Grundlagen: Es ergibt keinen Sinn, über das Feintuning der MySQL-Datenbank oder gar über Replikation und Verteilung auf mehrere Server nachzudenken, bevor Sie nicht einen Blick auf Ihre Datenbankanwendung geworfen haben. < br/>
Die langsamsten Anfragen können da schon einen guten Anhaltspunkt geben. Ein anderer Anhaltspunkt ist, wenn Probleme an ganz bestimmten Flaschenhälsen des Systems auftreten. In solchen Fällen muss die Problemstelle identifiziert werden. Mit EXPLAIN SELECT holen Sie sich Informationen über eine Abfrage, beispielsweise mit possible_keys die Felder, für die ein Index geeignet wäre. Damit können Sie an problematischen Stellen einen Index setzen oder einen mehrspaltigen Index verwenden. Je nach Index müssen Sie den Speicher für Indizes erhöhen. Sie finden den Wert in der Variablen key_buffer. So lassen sich auch Probleme im Datenbankdesign aufdecken. Eine normalisierte Struktur kann durch die Vielzahl an Abfragen langsamer werden. Auch Joins und SELECT-Abfragen, die mit dem Sternchen alle Daten aus einer Tabelle holen, sind dafür berüchtigt, zu Performance-Problemen zu führen.