Allgemeines
MySql Performanceprobleme – Die Klassiker
Wer kennt das nicht? Man baut eine kleine aber feine Internetseite und ganz plötzlich wird diese Populär. Schön. Aber stellen wir uns einfach mal vor es sei keine statische Internetseite. Nein. Wir bauen schließlich richtige Webapplikationen.
Für all jene, die die Entwicklung von Serverseitigen Applikationen nach dem Lesen von drei Tutorials für eine triviale Angelegenheit halten hier eine kleine Liste von Anfängerfehlern, die Datenbank betreffend, deren Lösung noch in späteren Beiträgen erörtert wird. Meine Erfahrungen beruhen zwar überwiegend auf MySql, lassen sich aber in der Regel auch auf andere Datenbankmanagementsysteme übertragen.
- Verbindungsaufbau ohne Connection Pooling
- Die Anzahl der Verbindungen in einem Pool zu schmal bemessen
- Die Anzahl der maximalen Datenbankverbindungen auf dem Server ist zu schmal bemessen
Der Datenbankserver Die Caches des Datenbankservers sind schlampig konfiguriert
- Datenbankerverbindungen werden nicht geschlossen (immer schön auf auftretende Exceptions achten, die genau dieses schließen verhindern könnten)
- Die Timeouts für das Schließen einer Verbindung sind entweder zu kurz oder zu lang eingestellt
- Die Timeouts für das öffnen Öiner Verbindung sind entweder zu kurz oder zu lang bemessen
- Es werden mehr Datenbankverbindungen verwendet oder offengehalten als benötigt (passiert meistens dann, wenn entweder Verbindungen nicht geschlossen werden, oder man versucht sich ein Mini-Framework für Datenbankzugriffe zu schreiben, dass nicht sorgsam mit den Resourcen umgeht)
- Die Netzwerkkarte des Datenbankservers ist
im Arsch defekt
- Der Datenbankserver ist gar nicht an (soll schonmal vorgekommen sein)
- Irgendwer (meistens einer der nur drei Tutorials gelesen hat) hat die Konfiguration geändert
- Der Datenbankserver hat zu wenig RAM. Diesen Umstand sollte man immer dann im Erwägung ziehen, wenn die Größe der Indizes aller genutzen Tabellen, größer ist als die Größe des für MySql verfügbaren Arbeitsspeichers.
- Die Indizes der Tabellen sind unzureichend, gar nicht oder überschwenglich gesetzt
Diese Liste hat natürlich keinerlei Anspruch auf Vollständigkeit. Aber ihr dürft natürlich gerne mal ein paar Kommentare hier lassen.
Zum ConnectionPooling mit Tomcat werde ich hier noch ein paar Worte verlieren. Ebenfalls zum Thema der Tabellenindizes. Es ist was Datenbankperformance angeht überhaupt eines der wichtigsten Themen. Nicht zu vernachlässigen bei der Konfiguration von Indizes ist immer auch die zugrunde liegende Datenbankkonfiguration. Aber dazu später mehr.

Diskussion
Keine Kommentare zu “MySql Performanceprobleme – Die Klassiker”
Post a comment