MySQL – Speicherplatz optimieren
Um den Speicherverbrauch einer MySQL Datenbank zu optimieren, kann das Tool mysqlcheck verwendet werden. Um einen Vorher-Nachher-Vergleich durchführen zu können, sollte vor einer Optimierung ein Blick auf den Verbrauch des Speicherplatzes der einzelnen Schemata durchgeführt werden.
Schritt 1: Anmelden am Datenbankserver
Mit dem Befehl “mysql” an der Datenbank anmelden und danach das Passwort eingeben.
mysql -u username -p
Schritt 2: Übersicht Speicherverbrauch je Schema/Tabelle
Wenn für die Anmeldung der User “root” verwendet wird, dann kann mit folgender SQL-Abfrage eine Auflistung aller Datenbanken und deren Speicherverbrauch abgerufen werden:
SELECT table_schema AS "Datenbank", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.tables GROUP BY table_schema ORDER BY table_schema;
Um einen detaillierten Blick auf einzelne Tabellen zu erhalten, wird eine weitere Abfrage benötigt. Dabei wird der jeweilige Tabellenname und der Speicherverbrauch dargestellt. In der WHERE-Klausel muss dafür der Schemaname (schema_name) angegeben werden.
SELECT table_name AS "Tabelle", ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)" FROM information_schema.tables WHERE table_schema = "schema_name" ORDER BY (data_length + index_length) DESC;
Schritt 3: Speicherverbrauch optimieren
Falls der mysql Client noch geöffnet sein sollte, einfach mit “STRG + C” beenden, um auf die Konsole zu kommen.
Jetzt kann mit dem Befehl “mysqlcheck” der Speicherplatz der Tabellen optimiert werden:
mysqlcheck -u username -p --optimize --databases meinSchemaname
Danach einfach den Schritt 1 und 2 wiederholen, um den Erfolg zu begutachten. Es ist auch möglich, alle Schemata gleichzeitig zu optimieren, hierfür muss nur der Parameter “–databases” mit “–all-databases” ausgetauscht werden und der Wert “meinSchemaname” entfällt.
Weiterführender Link:
MySQL Dokumentation: http://dev.mysql.com/doc/refman/5.5/en/mysqlcheck.html