Bei erfolgs-blogging.de habe ich heute einen schönen Artikel darüber gefunden, wie man seine WordPress-Datenbank optimieren kann. Der Autor empfiehlt z. B. auf die Tabelle mit den Kommentaren den MySQL-Befehl „Optimize“ anzuwenden. Ich habe das ausprobiert und es hat auch einwandfrei funktioniert. Dann habe ich mir gedacht, warum nur auf eine Tabelle anwenden, es bringt doch sicher noch mehr, wenn ich die ganze Datenbank optimiere? Und warum sollte ich mich auf WordPress beschränken, ich verwende doch noch andere Datenbanken, z. B. für mein Rätselforum oder für Piwik?
Also habe ich dann alle Tabellen all meiner Datenbanken der Reihe nach optimiert. Bei den meisten hatte sich die Größe nach der Optimierung zwar etwas verkleinert, aber der Effekt hielt sich doch in Grenzen. Als letztes war dann die Piwik-Datenbank an der Reihe. Diese hatte ich im Dezember 2009 angelegt und bis heute hatte sie die stattliche Größe von 324 MB erreicht. Als ich dann die Optimierung startete, traute ich meinen Augen kaum, denn die Optimierung brachte eine Verkleinerung der Datenbank von satten 50 MB auf 274 MB!
Da die Anleitung auf erfolgsblogging.de doch etwas knapp geraten ist, erkläre ich hier etwas ausführlicher, wie man vorgehen muss, um seine Datenbanken zu optimieren und damit auch zu verkleinern. Ich verwende dafür phpMyAdmin, das eigentlich bei jedem Webhoster installiert sein sollte.
Datenbank optimieren mit phpMyAdmin
Nach dem Start von phpMyAdmin klickt man oben links auf den Namen der Datenbank. Damit stellt man sicher, dass die richtige Datenbank ausgewählt ist. Und was macht man als nächstes, wenn man an seiner Datenbank etwas ändern möchte? Natürlich ein Backup.
Backup erstellen
Dafür klickt man in der oberen Menüleiste auf „Exportieren“. Falls noch nicht voreingestellt, klickt man dann links oben auf „Alle auswählen“, damit man auch sicher ist, dass wirklich alle Daten gesichert sind. Darunter kann man dann ein beliebiges Exportformat wählen. Da es sich um ein Backup handelt, empfiehlt es sich „SQL“ zu verwenden. Falls es ein Problem bei der Optimierung geben sollte, kann man die Datenbank in diesem Format am einfachsten über den Menüpunkt „Importieren“ wiederherstellen. Weiter unten klickt man dann noch „Senden“ und ein Kompressionsverfahren (z. B. ZIP) an, damit das Backup nicht mehr Platz wegnimmt als unbedingt nötig. Nach dem Klick auf „OK“ gibt man noch den Dateinamen an, unter dem das Backup gespeichert werden soll.
Datenbank optimieren
Nachdem das Backup dann fertig ist (und auch wirklich erst danach), kann man sich an das Optimieren der Datenbank wagen. Dazu klickt man auf in der oberen Menüleiste auf „Struktur“. Dort werden dann alle Tabellen angezeigt, die die Datenbank enthält. Am Ende der Anzeige wird unter „Größe“ die Gesamtgröße angezeigt. Links unten sollte man auf „Alle auswählen“ klicken und danach in der Schaltfläche rechts daneben „Optimiere Tabelle“ anwählen. Dabei bitte sehr genau darauf achten, was man anklickt, denn die Schaltfläche beinhaltet auch solch gefährliche Menüpunkte wie „Leeren“ oder „Löschen“. Bei mir wurde der Optimierungsvorgang übrigens sofort nach der Auswahl gestartet, ohne dass ich auf „OK“ klicken musste.
Wenn alles geklappt hat wird eine Übersicht angezeigt, welche Tabelle optimiert wurde (OK) und welche nicht (Table is already up to date). Wenn man sich jetzt wieder die Struktur anzeigen lässt, sieht man die neue Größe der Datenbank nach der Optimierung.
Achtung! Wie bereits erwähnt sollte man vor der Datenbankoptimierung unbedingt ein Backup erstellen. Es passiert ganz schnell, dass man mit einem falschen Mausklick Daten ungewollt löscht. Ohne Backup kann dann die Arbeit von Wochen oder Monaten mit einem Schlag weg sein!
Eigene Erfahrungen mit der Optimierung von Datenbanken
Welche Erfahrungen habt ihr mit dem Optimieren von Datenbanken gemacht? Um wie viel konntet ihr eure Datenbankgröße reduzieren? Schreibt doch bitte in den Kommentaren etwas dazu.
Die Funktion nutze ich auch schon seit geraumer Zeit, die Resultate habe ich allerdings dabei nie überprüft.
Vielleicht sollte ich dafür mal ein automatisiertes Script schreiben, das zuerst alle einzelnen DBs sichert und dann die entsprechenden Funktionen über die Datenbanken laufen lässt…
Ich habe die Tabellenoptimierung auch mal vorgenommen. Bei meinem Blog war zwar ein Überhang vorhanden, aber das war (noch) nicht nennenswert. Ehrlich gesagt, hab ich da auch verpasst, die Werte zu notieren :-$. Bei meiner HP – auf dieser Datenbank ist auch Piwik installiert – belief sich die Größe vor Optimierung auf 4,5 MB, der Überhang betrug 1,3 MB. Nach Optimierung beträgt die Größe nun 2,6 MB und der Überhang ist 0. Piwik miste ich aber zwischendurch immer aus, weil ich nicht die Daten von einem Jahr benötige.
Ich baue in meinen Anwendungen an geeigneten Stellen für bestimmte Tabellen gerne die Anweisung mysql_query(„optimize `tabellenname`“) ein. Das funktioniert seit einigen Jahren ohne Probleme.
Mit dieser Anweisung wird der Platz von gelöschten Datensätzen freigegeben. Es lohnt sich also besonders bei Tabellen, in die viel rein und raus geht.
Ich bin gerade am recherchieren udn auf diesen Artikel gestoßen. Bei Piwik gibt es einige Tabellen die man ruhig löschen kann. Unter anderem alle mit dem Präfix _archive_blob und _archive_numeric. Nach dem löschen werden diese wieder neu frisch und ohne Karteileichen angelegt. Nun frage ich mich ob es weitere solcher Tabellen gibt. Bei mir war bei einem zwei Jahre alten Piwik eine starke Verbesserung zu spüren. Außerdem behebte es einige Probleme die ich hatte.
Ich habe das gerade mal bei mir nachvollzogen. Ich habe die von dir genannten Tabellen gelöscht. Nachdem ich Piwik dann neu gestartet hatte, wurden diese aber wieder angelegt. Insgesamt konnte ich damit meine Piwik-Datenbank um ca. 10 % schrumpfen, was bei mir immerhin 60 MB waren. Probleme wurden dadurch bei mir aber leider keine behoben.
Wer das nachvollziehen möchte, sollte aber auf jeden Fall vorher ein Backup der Piwik-Datenbank machen.
War auf jeden Fall ein guter Tipp von dir, Paul 🙂
Interessant wäre auch ein fertiges PHP-Skript, welches man dann mit Tasks einmal wöchentlich laufen lassen könnte.
@Cujo, Danke ^^.
Ich finde das Piwik prinzipiell performanter werden muss.
Meine Datenbank hat sich um 300 MB verkleinert 🙂
von 720 auf 420 MB