it-swarm.com.de

Wie erhalte ich die wahre Größe der MySQL-Datenbank?

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
  • zahlen sind gerundet.

Habe ich also 362000 oder 400 * 362000 = 144800000 Datenbytes für diese Tabelle? Und was bedeutet Indexlänge? Danke!

132
marvin

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; 
267
ron_dobley

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>"
92
minhas23

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:

phpMyAdmin screenshot

Dies wird wahrscheinlich etwas an Genauigkeit verlieren, wenn die Größen steigen, aber es sollte für Ihre Zwecke genau genug sein.

29
Radu Murzea

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; 
8
jakson

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/

3
MiGro

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

0
ofrommel

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'
0
Semra

Wenn Sie MySql Workbench verwenden, ist es sehr einfach, alle Details zu Datenbankgröße, Tabellengröße, Indexgröße usw. abzurufen.

  1. Klicken Sie mit der rechten Maustaste auf Schema
  2. Wählen Sie die Option Schema Inspector aus

     enter image description here

  3. Zeigt alle Details der Schemagröße an 

  4. Wählen Sie die Registerkarte Tables, um die Größe der einzelnen Tabellen anzuzeigen.

     enter image description here

  5. Die in der Spalte Datenlänge angezeigte Tabellengröße

0
Viraj Dhamal

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;
0
Arbab Nazar

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 .

0
Rick James