[MySQL] Datenbankoptimierung/Abfragebschleunigung

Edemund

Erfahrenes Mitglied
Hallo,

ich stehe seit einiger Zeit vor einem im wahrsten Sinne des Wortes sich vergrößernden Problem: Meiner Datenbank.

Meine Seite war eigentlich rein Privat dimensioniert für mich und meine Freunde, hatte dann plötzlich aber teilweise exponentiellen Mitgliederzuwachs und dadurch bin ich ein wenig in ein Abenteuer hineingestolpert, das ich erst gar nicht wollte und aus dem ich jetzt nur unter einigen Schwierigkeiten wieder herauskomme.

Auf jeden Fall habe ich eine Datenbank mit momentan 181 Tabellen und einem Umfang von 203 MB.
Dabei ergeben sich grundsätzlich zwei Probleme: Zum einen gibt sie mir, obwohl 100 maxConnections eingestellt sind, immer zu Stoßzeiten (höchstens 60 Leute gleichzeitig online) "too many connections" zurück.

Der Seitenaufbau verläuft per Include-System, dh. ganz oben include ich die Verbindung, dann die jeweilige Seite samt ihren Querys und (danach) unten mache ich alles wieder mit mysql_close zu, genauso wie ich kein mysql_p_connect() verwende.

Die Abfragen selbst verlaufen teilweise auch quälend langsam (gerade zu Stoßzeiten) und brechen oft ab. Indizes sind überall vergeben, die Spaltentypen möglichst Platzsparend definiert. Sobald sich die Userlast reduziert wird das ganze ziemlich schnell, zu stoßzeiten aber unerträglich langsam.

Ein Problem das ich habe ist, dass viele Tabellen, die ich regelmäßig lösche, einen ziemlichen Überhang produzieren (momentan insgesamt um die 3 MB !), was wohl eindeutig auf Versäumnisse meinerseits zurückzuführen ist, nur komme ich dem Problem nicht bei, da ich keine Cronjobs installieren darf.

Daher wollte ich mal generell in den Raum werfen, was ihr denn für Ideen zur Weiteren DB-Optimierung habt, woher die too many connections noch kommen könnten, wie den Überhang in den Griff zu bekommen und welche extremen Fehler ich in meiner Laienhaftigkeit begangen habe und übersehen habe :)

Vielen Dank für eure Hilfe!
Edemund
 
Zuletzt bearbeitet:
Zurück