Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak sprawdzić rozmiar wszystkich tabel w bazie danych w MySQL?

W MySQL możesz sprawdzić rozmiar wszystkich tabel w danej bazie danych (lub we wszystkich bazach danych), wysyłając zapytanie do information_schema.tables stół. Ta tabela przechowuje dane o każdej tabeli w bazie danych, w tym informacje o rozmiarze każdej tabeli, dacie utworzenia, sortowaniu itp.

Możesz również sprawdzić rozmiar każdej tabeli w bazie danych za pomocą graficznego interfejsu użytkownika MySQL Workbench.

Ten artykuł zawiera krótki przegląd każdej metody.

Przykład kodu

Oto przykład zapytania SQL, które zwraca rozmiar tabel w bazie danych.

SELECT 
    table_name 'Table Name',
    data_length + index_length 'Size in Bytes',
    ROUND(((data_length + index_length) / 1024 / 1024), 2) 'Size in MiB'
FROM information_schema.tables
WHERE table_schema = 'sakila'
ORDER BY (data_length + index_length) DESC;

Wynik:

+----------------------------+---------------+-------------+
| Table Name                 | Size in Bytes | Size in MiB |
+----------------------------+---------------+-------------+
| rental                     |       2785280 |        2.66 |
| payment                    |       2228224 |        2.13 |
| inventory                  |        376832 |        0.36 |
| film                       |        278528 |        0.27 |
| film_actor                 |        278528 |        0.27 |
| film_text                  |        196608 |        0.19 |
| customer                   |        131072 |        0.13 |
| address                    |        114688 |        0.11 |
| staff                      |         98304 |        0.09 |
| film_category              |         81920 |        0.08 |
| city                       |         65536 |        0.06 |
| store                      |         49152 |        0.05 |
| actor                      |         32768 |        0.03 |
| country                    |         16384 |        0.02 |
| language                   |         16384 |        0.02 |
| category                   |         16384 |        0.02 |
| staff_list                 |             0 |        0.00 |
| customer_list              |             0 |        0.00 |
| nicer_but_slower_film_list |             0 |        0.00 |
| actor_info                 |             0 |        0.00 |
| sales_by_film_category     |             0 |        0.00 |
| film_list                  |             0 |        0.00 |
| sales_by_store             |             0 |        0.00 |
+----------------------------+---------------+-------------+

Zwraca rozmiar każdej tabeli w sakila Baza danych. Zastąp sakila z nazwą odpowiedniej bazy danych. Oczywiście możesz pominąć WHERE w całości, a to zwróci rozmiar wszystkich tabel we wszystkich bazach danych, ale będzie to długa lista.

W tym przypadku wyniki uporządkowałem według rozmiaru tabeli w kolejności malejącej. Dodałem również kolumnę z rozmiarem przekonwertowanym na MiB (mebibajty).

Inną metodą konwersji rozmiaru jest użycie sys.FORMAT_BYTES() funkcja.

Funkcja sys.FORMAT_BYTES()

Możesz użyć sys.FORMAT_BYTES() funkcja konwertująca rozmiar z bajtów na bytes , KiB (kibibajty), MiB (mebibajty), GiB (gibibajty), TiB (tebibajty) lub PiB (pebibajty), ze wskaźnikiem jednostek dodanym do wartości. Wskaźnik jednostek jest dodawany automatycznie. Funkcja zdecyduje, na którą jednostkę przekonwertować, w zależności od wielkości wartości, więc nie masz żadnej kontroli nad tym, której jednostki użyć.

Oto przykład użycia tej metody:

SELECT 
    table_name 'Table Name',
    data_length + index_length 'Size in Bytes',
    sys.FORMAT_BYTES((data_length + index_length)) 'Size (Formatted)'
FROM information_schema.tables
WHERE table_schema = 'sakila'
ORDER BY (data_length + index_length) DESC;

Wynik:

+----------------------------+---------------+------------------+
| Table Name                 | Size in Bytes | Size (Formatted) |
+----------------------------+---------------+------------------+
| rental                     |       2785280 | 2.66 MiB         |
| payment                    |       2228224 | 2.12 MiB         |
| inventory                  |        376832 | 368.00 KiB       |
| film                       |        278528 | 272.00 KiB       |
| film_actor                 |        278528 | 272.00 KiB       |
| film_text                  |        196608 | 192.00 KiB       |
| customer                   |        131072 | 128.00 KiB       |
| address                    |        114688 | 112.00 KiB       |
| staff                      |         98304 | 96.00 KiB        |
| film_category              |         81920 | 80.00 KiB        |
| city                       |         65536 | 64.00 KiB        |
| store                      |         49152 | 48.00 KiB        |
| actor                      |         32768 | 32.00 KiB        |
| category                   |         16384 | 16.00 KiB        |
| country                    |         16384 | 16.00 KiB        |
| language                   |         16384 | 16.00 KiB        |
| actor_info                 |             0 | 0 bytes          |
| customer_list              |             0 | 0 bytes          |
| film_list                  |             0 | 0 bytes          |
| nicer_but_slower_film_list |             0 | 0 bytes          |
| sales_by_film_category     |             0 | 0 bytes          |
| sales_by_store             |             0 | 0 bytes          |
| staff_list                 |             0 | 0 bytes          |
+----------------------------+---------------+------------------+

Środowisko pracy MySQL

Jeśli korzystasz z GUI MySQL Workbench, możesz wskazać i kliknąć, aby wyświetlić rozmiary tabel. Oto jak:

  1. Przejdź do bazy danych w Schemas okienko
  2. Najedź kursorem na odpowiednią bazę danych
  3. Kliknij małą ikonę informacji obok nazwy bazy danych. Spowoduje to wczytanie informacji o bazie danych, w tym o przybliżonym rozmiarze, liczbie tabel, sortowaniu itp.
  4. Kliknij Tables patka. Wyświetla informacje o każdej tabeli w bazie danych, w tym długość danych i długość indeksu.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamień na składnię zapytania

  2. Zapytanie z wieloma wartościami w kolumnie

  3. Jaka jest różnica między używaniem INDEX vs KEY w MySQL?

  4. MySQL Order według liczby, wartości null trwają

  5. Zapytania hierarchiczne w MySQL