Ich kann diese Abfrage ausführen, um die Größe aller Tabellen in einer MySQL-Datenbank zu ermitteln:
show table status from myDatabaseName;
Ich hätte gerne Hilfe beim Verständnis der Ergebnisse. Ich suche Tische mit den größten Größen.
Welche Spalte soll ich mir ansehen?
Antworten:
Mit dieser Abfrage können Sie die Größe einer Tabelle anzeigen (obwohl Sie zuerst die Variablen ersetzen müssen):
oder diese Abfrage, um die Größe jeder Tabelle in jeder Datenbank aufzulisten, die größte zuerst:
quelle
AND table_name IN ('table_1', 'table_2', 'table_3');
VARCHAR
undBLOB
tippen?Sie können den Schemanamen aus der Spalte " information_schema " -> Tabelle SCHEMATA -> Spalte " SCHEMA_NAME " abrufen
Zusätzliche Sie können die Größe der MySQL-Datenbanken wie folgt ermitteln.
Ergebnis
Sie können hier weitere Details erhalten.
quelle
Dadurch werden die Größen sortiert (DB-Größe in MB).
quelle
Wenn Sie möchten, dass eine Abfrage die aktuell ausgewählte Datenbank verwendet. Kopieren Sie einfach diese Abfrage einfügen. (Keine Änderung erforderlich)
quelle
SIZE_MB
FROM information_schema.TABLES WHERE table_schema = DATABASE () ORDER BY (data_length + index_length) ASC;Es gibt eine einfache Möglichkeit, mit Workbench viele Informationen abzurufen:
Klicken Sie mit der rechten Maustaste auf den Schemanamen und klicken Sie auf "Schemainspektor".
Im resultierenden Fenster haben Sie eine Reihe von Registerkarten. Die erste Registerkarte "Info" zeigt eine grobe Schätzung der Datenbankgröße in MB.
Die zweite Registerkarte "Tabellen" zeigt die Datenlänge und andere Details für jede Tabelle.
quelle
Größe aller Tabellen:
Angenommen, Ihre Datenbank oder Ihr
TABLE_SCHEMA
Name lautet "news_alert". Diese Abfrage zeigt dann die Größe aller Tabellen in der Datenbank an.Ausgabe:
Für die spezifische Tabelle:
Angenommen, Sie
TABLE_NAME
sind "Nachrichten" . Dann wird die SQL-AbfrageAusgabe:
quelle
Versuchen Sie den folgenden Shell-Befehl (durch
DB_NAME
Ihren Datenbanknamen ersetzen ):Überprüfen Sie für die Drupal / Drush-Lösung das folgende Beispielskript, in dem die größten verwendeten Tabellen angezeigt werden:
quelle
Hier ist eine andere Möglichkeit, dies anhand der Bash-Befehlszeile herauszufinden.
for i in
mysql -NB -e 'show databases'
; do echo $i; mysql -e "SELECT table_name AS 'Tables', round(((data_length+index_length)/1024/1024),2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema =\"$i\" ORDER BY (data_length + index_length) DESC" ; donequelle
Wenn Sie phpmyadmin verwenden, gehen Sie einfach zur Tabellenstruktur
z.B
quelle
Angepasst an die Antwort von ChapMic, um meinen besonderen Bedürfnissen gerecht zu werden.
Geben Sie nur Ihren Datenbanknamen an und sortieren Sie dann alle Tabellen in absteigender Reihenfolge - von der GRÖSSTEN bis zur KLEINSTEN Tabelle in der ausgewählten Datenbank. Es muss nur 1 Variable ersetzt werden = Ihr Datenbankname.
quelle
Wenn Sie
ssh
Zugriff haben, können Sie es auch einfach versuchendu -hc /var/lib/mysql
(oder andersdatadir
, wie in Ihrem festgelegtmy.cnf
).quelle
Eine andere Möglichkeit, die Anzahl der Zeilen und den belegten Platz anzuzeigen und zu ordnen.
Die einzige Zeichenfolge, die Sie in dieser Abfrage ersetzen müssen, ist "yourDatabaseName".
quelle
Ich finde, dass die vorhandenen Antworten nicht die Größe der Tabellen auf der Festplatte angeben, was hilfreicher ist. Diese Abfrage bietet eine genauere Festplattenschätzung im Vergleich zur Tabellengröße basierend auf data_length & index. Ich musste dies für eine AWS RDS-Instanz verwenden, bei der Sie die Festplatte nicht physisch untersuchen und die Dateigröße überprüfen können.
quelle
Berechnen Sie die Gesamtgröße der Datenbank am Ende:
quelle
Alle 2 oben sind auf MySQL getestet
quelle
Dies sollte in MySQL getestet werden, nicht in Postgresql:
quelle