Jak uzyskać rozmiar bazy danych MySQL?


542

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


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.


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

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


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).


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";

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.


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;

2

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.