Ich würde gerne wissen, wie viel Speicherplatz meine MySQL-Datenbank verwendet, um einen Webhost auszuwählen Ich habe den Befehl SHOW TABLE STATUS LIKE 'table_name'
gefunden. Wenn ich also die Abfrage stelle, bekomme ich so etwas:
Name | Rows | Avg. Row Length | Data_Length | Index Length
---------- ---- --------------- ----------- ------------
table_name 400 55 362000 66560
Habe ich also 362000 oder 400 * 362000 = 144800000 Datenbytes für diese Tabelle? Und was bedeutet Indexlänge? Danke!
Aus S. Prakash, gefunden im MySQL-Forum :
SELECT table_schema "database name",
sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema;
Oder in einer einzigen Zeile, um das Kopieren und Einfügen zu erleichtern:
SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema;
Sie können die Größe Ihrer MySQL-Datenbank ermitteln, indem Sie den folgenden Befehl im MySQL-Client ausführen
SELECT sum(round(((data_length + index_length) / 1024 / 1024 / 1024), 2)) as "Size in GB"
FROM information_schema.TABLES
WHERE table_schema = "<database_name>"
Wenn Sie phpMyAdmin verwenden, kann es Ihnen diese Informationen mitteilen.
Gehen Sie einfach zu "Datenbanken" (Menü oben) und klicken Sie auf "Statistiken aktivieren".
Sie werden so etwas sehen:
Dies wird wahrscheinlich etwas an Genauigkeit verlieren, wenn die Größen steigen, aber es sollte für Ihre Zwecke genau genug sein.
wenn Sie es in MB finden möchten, tun Sie dies
SELECT table_schema "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
GROUP BY table_schema;
Grundsätzlich gibt es zwei Möglichkeiten: Abfrage-DB (Datenlänge + Indexlänge) oder Überprüfen der Dateigröße. Die Indexlänge bezieht sich auf Daten, die in Indizes gespeichert sind.
Alles wird hier beschrieben:
http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/
MySQL-Dienstprogramme von Oracle haben einen Befehl namens mysqldiskusage, der die Festplattennutzung jeder Datenbank anzeigt: https://dev.mysql.com/doc/mysql-utilities/1.6/de/mysqldiskusage.html
Keine der Antworten enthält die Overhead-Größe und die Metadatengröße von Tabellen.
Hier ist eine genauere Schätzung des von einer Datenbank zugewiesenen "Speicherplatzes".
SELECT ROUND((SUM(data_length+index_length+data_free) + (COUNT(*) * 300 * 1024))/1048576+150, 2) AS MegaBytes FROM information_schema.TABLES WHERE table_schema = 'DATABASE-NAME'
Wenn Sie MySql Workbench verwenden, ist es sehr einfach, alle Details zu Datenbankgröße, Tabellengröße, Indexgröße usw. abzurufen.
Wenn Sie die Größe aller MySQL-Datenbanken ermitteln möchten, werden sie mit diesem Befehl in Megabyte angezeigt.
SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;
Wenn Sie über große Datenbanken verfügen, können Sie den folgenden Befehl verwenden, um das Ergebnis in Gigabyte anzuzeigen.
SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES GROUP BY table_schema;
Wenn Sie nur die Größe einer bestimmten Datenbank anzeigen möchten, beispielsweise YOUR_DATABASE_NAME
, können Sie die folgende Abfrage verwenden.
SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES WHERE table_schema='YOUR_DATABASE_NAME' GROUP BY table_schema;
SUM(Data_free)
ist möglicherweise ungültig. Das hängt von der Geschichte von innodb_file_per_table
ab. Weitere Diskussionen werden gefunden hier .