MySQL Performance 0
Ein Problem, das viele Hobby-Projekte plagt, ist die Performance. In den eigenen Tests ist das Projekt immer schnell und stabil. Auch bei kleinen Tests mit 10 Spielern/Benutzern gibt es noch keine Probleme, aber sobald 100 Spieler/Benutzer auf dem System arbeiten geht plötzlich der Ärger los: Timeouts, lange Ladezeiten und damit massenweise verärgerte Anwender.
Oftmals ist das ein Problem der Datenbank und weniger der Applikation selbst. Viele Datenbanken sind schlecht geplant und noch schlechter umgesetzt: Tabellen werden bei Bedarf hinzugefügt, es gibt kein Konzept, keine durchgängige Logik und Fremdschlüssel sind hauptsächlich genau das: fremd. Hier hilft ein gutes Buch über Datenbankdesign.
Aber selbst wenn man hin und wieder auf einige wenigstens halbwegs normalisierte und von Anfang an geplante Datenbanken trifft, ist es dann doch der Umgang mit der Datenbank, welcher die Perfomance in den Keller gehen lässt. Hier hilft ein Profiler, also letztendlich eine Anzeige, welche SQL-Anfragen pro Seitenaufruf gemacht werden und wie lange sie brauchen. Es muss auch gar nichts bsonderes sein – es genügt im Grunde seine Datenbank-Abstraktion (die hoffentlich jeder verwendet) an seine Debug-Klasse zu hängen (die hoffentlich definitv vorhanden ist) und anschließend auszugeben. In unserem Framework sieht das ungefähr so aus (gezeigte Queries sind Beispiele):

Zur Erklärung: alle Queries, die länger als ein definierter Zeitraum andauern, werden markiert. Gleiches gilt für die gesamte Ausführungszeit. Man kan auf einen Blick erfassen, wo eine problematische Abfrage stattfindet und an welcher Stelle man eventuell noch optimieren kann. Dazu noch die Angabe von welcher Zeile aus welcher Datei der Query aufgerufen wurde und man hat ein kleines, aber mächtiges Werkzeug seine SQL-Abfragen zu optimieren. Besser man denkt sofort daran, als zu spät, wenn sich bereits die Benutzer um die Prozesszeit von MySQL schlagen.
Zu guter Letzt noch einige schöne Links zum Thema MySQL-Performance:
subscribe to comments RSS
Es gibt noch keine Kommentare für diesen Artikel