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


542

Wie erhalte ich die Größe einer MySQL-Datenbank?
Angenommen, die Zieldatenbank heißt "v3".


Für eine bestimmte Tabelle / spezifische Datenbankgröße hilft das hier bereitgestellte Skript. Die Informationen werden aus der Tabelle information_schema.tables berechnet. Die ausführliche Antwort finden Sie hier. Rathishkumar.in/2017/12/…
Rathish

Antworten:


1185

Wenn Sie diese Abfrage ausführen, erhalten Sie wahrscheinlich das, wonach Sie suchen:

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; 

Diese Abfrage stammt aus den MySQL-Foren , in denen umfassendere Anweisungen verfügbar sind.


4
Auch nachdem ich die meisten Daten aus den Tabellen in der Datenbank gelöscht habe, bleibt die Größe gleich
Vidz

2
@Vidz verwenden Sie InnoDB-Engine. In diesem Fall können Sie Speicherplatz freigeben, sofern Sie nicht file_per_table verwenden und Tabellen ändern.
Mandza

5
Beachten Sie bitte, dass diese Methode keine der vollständig leeren Datenbanken zurückgibt. Es muss mindestens eine einzige Tabelle vorhanden sein, damit die Datenbank im Ergebnis angezeigt wird.
v010dya

13
Um aus einer einzelnen Datenbank auszuwählen, fügen Sie diese zwischen der Zeile FROMund GROUPhinzu: where table_schema='DATABASE_NAME'- Ersetzen DATABASE_NAMEdurch Ihre Datenbank.
KJ Price

2
Hinweis: MySQL Workbench gibt einen Syntax error: {column title} (double quoted text) is not valid input here.Fehler aus. Die Spaltentitel sollten in Häkchen gesetzt werden. Dh Database Name.
KareemElashmawy

75

Sie kann mit dem folgenden MySQL-Befehl ermittelt werden

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

Ergebnis

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Ergebnis in GB abrufen

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema

2
Nett. Ich mag diese Antwort.
Progfan

31

Wenn Sie verwenden phpMyAdmin, können Sie alternativ die Summe der Tabellengrößen in der Fußzeile Ihrer Datenbankregisterkarte structureanzeigen. Die tatsächliche Datenbankgröße kann geringfügig über dieser Größe liegen, scheint jedoch mit der table_schemaoben genannten Methode übereinzustimmen.

Bildschirmfoto :

Geben Sie hier die Bildbeschreibung ein


26

Alternativ können Sie direkt in das Datenverzeichnis springen und nach der kombinierten Größe von v3.myd, v3 suchen. myi und v3. frm files (für myisam) oder v3.idb & v3.frm (für innodb).


7
Hinweis: ibd-Dateien existieren nur, wenn innodb_file_per_table
Slashterix

2
Diese Antwort ist sehr spezifisch für die Speicher-Engine. Eine Antwort von @ brian-willis ist angemessener.
Manu Manjunath

15

So erhalten Sie ein Ergebnis in MB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

So erhalten Sie ein Ergebnis in GB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

11
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

Wenn nicht installiert, kann dies durch Installieren des mysql-utilsPakets installiert werden, das von den meisten Hauptdistributionen gepackt werden sollte.


4

Melden Sie sich zuerst mit MySQL an

mysql -u username -p

Befehl zum Anzeigen der Größe einer einzelnen Datenbank zusammen mit ihrer Tabelle in MB.

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

Ändern Sie den Datenbanknamen in Ihre Datenbank

Befehl zum Anzeigen aller Datenbanken mit ihrer Größe in MB.

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

1

Gehen Sie in das MySQL-Datenverzeichnis und führen Sie es aus du -h --max-depth=1 | grep databasename

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.