Mogę uruchomić to zapytanie, aby uzyskać rozmiary wszystkich tabel w bazie danych MySQL:
show table status from myDatabaseName;
Chciałbym pomóc w zrozumieniu wyników. Szukam stołów o największych rozmiarach.
Na którą kolumnę powinienem spojrzeć?
Odpowiedzi:
Możesz użyć tego zapytania, aby pokazać rozmiar tabeli (chociaż najpierw musisz podstawić zmienne):
lub to zapytanie, aby wyświetlić rozmiar każdej tabeli w każdej bazie danych, najpierw największe:
źródło
AND table_name IN ('table_1', 'table_2', 'table_3');
VARCHAR
iBLOB
piszesz?Można uzyskać nazwę schematu z „ information_schema ” -> Schematy stół -> „ schema_name ” kolumna
Dodatkowe Możesz uzyskać rozmiar baz danych mysql w następujący sposób.
Wynik
Możesz uzyskać dodatkowe informacje tutaj.
źródło
To sortuje rozmiary (rozmiar DB w MB).
źródło
Jeśli chcesz, aby zapytanie korzystało z aktualnie wybranej bazy danych. po prostu skopiuj wklej to zapytanie. (Nie wymaga modyfikacji)
źródło
SIZE_MB
Z schematu_informacyjnego.TABLES GDZIE tabela_schema = BAZA DANYCH () ORDER BY (długość_danych + długość_indeksu) ASC;Istnieje łatwy sposób na uzyskanie wielu informacji za pomocą Workbench:
Kliknij prawym przyciskiem myszy nazwę schematu i kliknij „Inspektor schematu”.
W wyświetlonym oknie masz wiele zakładek. Pierwsza zakładka „Informacje” pokazuje przybliżone oszacowanie wielkości bazy danych w MB.
Druga zakładka „Tabele” pokazuje Długość danych i inne szczegóły dla każdej tabeli.
źródło
Rozmiar wszystkich tabel:
Załóżmy, że twoja baza danych lub
TABLE_SCHEMA
nazwa to „news_alert”. Następnie to zapytanie pokaże rozmiar wszystkich tabel w bazie danych.Wynik:
Dla konkretnej tabeli:
Załóżmy, że twoje
TABLE_NAME
są „wiadomościami” . Następnie zapytanie SQL będzie-Wynik:
źródło
Spróbuj wykonać następujące polecenie powłoki (zastąp
DB_NAME
nazwą bazy danych):W przypadku rozwiązania Drupal / drush sprawdź następujący przykładowy skrypt, który wyświetli największe używane tabele:
źródło
Oto inny sposób rozwiązania tego problemu przy użyciu wiersza polecenia bash.
for i in
mysql -NB -e 'show databases'
; do echo $i; mysql -e "SELECT table_name AS 'Tables', round(((data_length+index_length)/1024/1024),2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema =\"$i\" ORDER BY (data_length + index_length) DESC" ; doneźródło
Jeśli używasz phpmyadmin, po prostu przejdź do struktury tabeli
na przykład
źródło
Zaadaptowano z odpowiedzi ChapMic, aby zaspokoić moją szczególną potrzebę.
Podaj tylko nazwę bazy danych, a następnie posortuj wszystkie tabele w kolejności malejącej - od NAJWIĘKSZEJ do NAJMNIEJSZEJ tabeli w wybranej bazie danych. Wymaga tylko 1 zmiennej do zastąpienia = nazwa bazy danych.
źródło
Jeśli masz
ssh
dostęp, możesz po prostu spróbowaćdu -hc /var/lib/mysql
(lub inaczejdatadir
, zgodnie z ustawieniem w swoimmy.cnf
).źródło
Kolejny sposób pokazania liczby wierszy i zajmowanej przestrzeni i uporządkowania według niej.
Jedynym ciągiem, który musisz zastąpić w tym zapytaniu, jest „twoja NazwaDanych”.
źródło
Uważam, że istniejące odpowiedzi w rzeczywistości nie podają wielkości tabel na dysku, co jest bardziej pomocne. To zapytanie zapewnia dokładniejsze oszacowanie dysku w porównaniu do rozmiaru tabeli na podstawie długości danych i indeksu. Musiałem użyć tego do wystąpienia AWS RDS, w którym nie można fizycznie zbadać dysku i sprawdzić rozmiarów plików.
źródło
Oblicz całkowity rozmiar bazy danych na końcu:
źródło
wszystkie 2 powyżej są testowane na mysql
źródło
Powinno to zostać przetestowane w mysql, a nie postgresql:
źródło