Jak uzyskać rozmiar bazy danych MySQL?

542

Jak uzyskać rozmiar bazy danych MySQL?
Załóżmy, że docelowa baza danych nosi nazwę „v3”.

Nowicjusz
źródło
W przypadku konkretnego rozmiaru tabeli / konkretnej bazy danych skrypt podany tutaj pomoże, informacje są obliczane na podstawie tabeli information_schema.tables, patrz szczegółowa odpowiedź tutaj rathishkumar.in/2017/12/…
Rathish

Odpowiedzi:

1184

Uruchom to zapytanie, a prawdopodobnie otrzymasz to, czego szukasz:

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; 

To zapytanie pochodzi z forów mysql , na których dostępne są bardziej wyczerpujące instrukcje.

Brian Willis
źródło
4
Nawet po usunięciu większości danych z tabel w bazie danych rozmiar pozostaje taki sam
Vidz
2
@Vidz używasz silnika InnoDB. Jeśli to zrobisz, możesz zwolnić miejsce, chyba że użyjesz file_per_table i zmienisz tabele.
mandza
5
Należy pamiętać, że ta metoda nie zwróci żadnej bazy danych, która jest całkowicie pusta, przynajmniej jedna tabela musi istnieć, aby baza danych pojawiła się w wyniku.
v010dya
13
Aby wybrać jedną bazę danych, dodaj to między wierszem FROMa GROUP: where table_schema='DATABASE_NAME'- zamieniając DATABASE_NAMEna bazę danych.
KJ Price
2
Uwaga: MySQL Workbench wypluje Syntax error: {column title} (double quoted text) is not valid input here.błąd. Tytuły kolumn powinny być owinięte znakami ptaszka. Tj Database Name.
KareemElashmawy
75

Można to ustalić za pomocą następującego polecenia MySQL

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

Wynik

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Uzyskaj wynik w GB

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema
Nadeem0035
źródło
2
Miły. Podoba mi się ta odpowiedź.
progfan
31

Alternatywnie, jeśli używasz phpMyAdmin, możesz spojrzeć na sumę rozmiarów tabel w stopce structurekarty bazy danych . Rzeczywisty rozmiar bazy danych może nieznacznie przekraczać ten rozmiar, jednak wydaje się być spójny z table_schemametodą wspomnianą powyżej.

Zrzut ekranu :

wprowadź opis zdjęcia tutaj

Joel
źródło
26

Alternatywnie możesz bezpośrednio przejść do katalogu danych i sprawdzić łączny rozmiar v3.myd, v3. myi i v3. pliki frm (dla myisam) lub v3.idb i v3.frm (dla innodb).


źródło
7
Uwaga: pliki IBM istnieją tylko wtedy, gdy używa się pliku innodb_file_per_table
Slashterix
2
Ta odpowiedź jest bardzo specyficzna dla silnika pamięci masowej. Odpowiedź @ brian-willis jest bardziej odpowiednia.
Manu Manjunath,
15

Aby uzyskać wynik w MB:

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

Aby uzyskać wynik w 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";
williambarau
źródło
11
mysqldiskusage  --server=root:MyPassword@localhost  pics

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

Jeśli nie jest zainstalowany, można go zainstalować, instalując mysql-utilspakiet, który powinien być spakowany przez większość głównych dystrybucji.

Rick James
źródło
4

Pierwsze logowanie do MySQL za pomocą

mysql -u username -p

Polecenie wyświetlania rozmiaru pojedynczej bazy danych wraz z tabelą w 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;

Zmień nazwę bazy danych na swoją bazę danych

Polecenie wyświetlenia wszystkich baz danych z rozmiarem w 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;
Hiren Parghi
źródło
2

Przejdź do katalogu danych mysql i uruchom du -h --max-depth=1 | grep databasename

Evan Haston
źródło