Eine Magento Datenbank kann mit der Zeit groß werden. Bevor einzelne Tabellen untersucht oder Daten gelöscht werden, lohnt sich oftmals ein Blick darauf, welche Tabellen den meisten Speicher belegen.
Mit der folgenden SQL Abfrage können Sie die 20 größten Tabellen inklusive Daten, Index und Gesamtgröße anzeigen:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT TABLE_NAME AS Tabelle, TABLE_ROWS AS Zeilen, ROUND(DATA_LENGTH / 1024 / 1024, 2) AS Daten_MB, ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS Index_MB, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS Gesamt_MB, ROUND(DATA_LENGTH / 1024 / 1024 / 1024, 3) AS Daten_GB, ROUND(INDEX_LENGTH / 1024 / 1024 / 1024, 3) AS Index_GB, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024, 3) AS Gesamt_GB FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'MAGENTO_DATENBANK' ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC LIMIT 20; |
MAGENTO_DATENBANK muss dabei durch den tatsächlichen Namen der Magento Datenbank ersetzt werden. Dieser steht beispielsweise in app/etc/env.php unter dbname.
Interessant sind vor allem Gesamt_MB beziehungsweise Gesamt_GB, da hier Daten und Indizes zusammengezählt werden. So fällt schnell auf, wenn beispielsweise eine Cron, Quote, Log oder Extension Tabelle ungewöhnlich viel Platz belegt.
Die Spalte Zeilen sollte bei InnoDB nur als ungefährer Wert betrachtet werden. Für die Suche nach besonders großen Tabellen sind dagegen DATA_LENGTH und INDEX_LENGTH entscheidend.
Die Abfrage verändert keine Daten und eignet sich deshalb gut als erster Überblick, bevor genauer untersucht wird, warum eine Magento Datenbank so groß geworden ist.