Performance der MySQL-Datenbank verbessern

veröffentlicht am 07. Dezember 2010

Ich habe eben gerade nach einem Script gesucht, das meine WordPress-Tabellen automatisch per cronjob optimiert. Sonst habe ich dafür immer WP-Optimize verwendet, ich wollte das Prozedere aber in einen cronjob auslagern. Dabei bin ich auf ein Script eines MySQL-Entwicklers gestoßen, mit dem man die Einstellungen seiner Datenbank überprüfen und daraufhin gezielt optimieren kann.

Um die Datenbank zu testen, musste ich zunächst bc auf meinem System nachinstallieren:

aptitude install bc

Danach habe ich das Script heruntergeladen, ausführbar gemacht und dann natürlich ausgeführt:

wget http://www.day32.com/MySQL/tuning-primer.sh
chmod +x tuning-primer.sh
./tuning-primer.sh

Nach Auswählen des Sockets und der Eingabe der Benutzerdaten vergleicht das Script die derzeitige MySQL-Konfiguration mit Laufzeit-Daten des MySQL-Servers. Der MySQL-Server sollte also am Besten schon einige Zeit im Betrieb gewesen sein, bevor man dieses Script zur Performance-Optimierung heranzieht. Auf Basis dieses Vergleichs schlägt das Script Verbesserungen vor, welche in der MySQL-Konfigurationsdatei – für gewöhlich my.cnf – vorgenommen werden können.

Da sich die Anforderungen an die Datenbank ständig ändern können, sollte man dieses Script immer mal wieder nutzen, um eine bestmögliche Performance erzielen zu können.

Kommentare

Bin über das Script vor einiger Zeit schon einmal gestossen bzw. jemand hat es mir zugesendet/empfohlen.

Nun gerade nochmals laufen gelassen und darauf hin Table_Cache verdoppelt. Mal schauen ob sich das auswirkt.

Kommentar #1 von Jeffrey am 07. Dezember 2010


Also wenn man seine DBs eh schon (so wie ich) mit dem MySqlDumper sichern sollte, dann kann man dort einfach angeben, dass sie vor jedem Backup optimiert werden sollen.
Mit Scripten kann ich als Nicht-Server-Besitzer ja weniger was anfangen. ;)

Kommentar #2 von Tom am 08. Dezember 2010


@Tom: Deine Optimierung beziehen sich auf die Tabelleninhalte. Meine Optimierungen betreffen die echten Servereinstellungen.

Ich wollte meinen nächtlichen cronjob, der für die Backups und andere Dinge zuständig ist halt noch um ein Shellscript erweitern, welches die Tabelleninhalte optimiert.

Kommentar #3 von Patrick am 08. Dezember 2010


Mal so ganz OT:
Wo ist denn dein favicon geblieben?;)

Kommentar #4 von Niljuha am 09. Dezember 2010


@Niljuha: Gute Frage, muss ich wohl mal wieder einpflegen ;)

Kommentar #5 von Patrick am 09. Dezember 2010


Macht ja nichts. Ich hatte auch lange gar keins und mein jetziges ist so naja ;).

Kommentar #6 von Niljuha am 09. Dezember 2010


für die Optimierung von MySQL Tabellen braucht man kein Skript…
-> 30 * * * * /usr/bin/mysqlcheck -u USER -pPASSWORT –auto-repair –check –optimize –all-databases > /dev/null 2>&1

… und hier noch mein Blog-Beitrag zu dem Thema :-)
-> http://suckup.de/blog/2010/07/26/mysql-server-optimieren/

Kommentar #7 von Voku am 15. Dezember 2010


@Voku: Danke, das ist dennoch ein Script, auch wenn du den Befehl direkt als crontab definierst ;)

Mit Script meinte ich Bashscript und nichts was ich selber programmiere :)

Kommentar #8 von Patrick am 15. Dezember 2010


Ein ähnliches Tool ist z.B. auch MySQL Tuner:

http://mysqltuner.com/

(gefällt mir persönlich sogar besser)…

Kommentar #9 von Olli am 03. Januar 2011


@Olli: Danke für den Tipp, habe das Script ausgetestet und sieht auch brauchbar aus :)

Kommentar #10 von Patrick am 03. Januar 2011


Hinterlasse einen Kommentar