V MySQL můžete zkontrolovat velikost všech tabulek v dané databázi (nebo ve všech databázích) dotazem na information_schema.tables
stůl. Tato tabulka ukládá data o každé tabulce v databázi, včetně informací o velikosti každé tabulky, datu vytvoření, řazení atd.
Velikost každé tabulky v databázi můžete také zjistit pomocí GUI MySQL Workbench.
Tento článek poskytuje rychlý přehled každé metody.
Příklad kódu
Zde je příklad dotazu SQL, který vrací velikost tabulek v databázi.
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;
Výsledek:
+----------------------------+---------------+-------------+ | 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 | +----------------------------+---------------+-------------+
To vrátí velikost každé tabulky v sakila
databáze. Nahraďte sakila
s názvem příslušné databáze. Samozřejmě můžete vynechat WHERE
klauzule dohromady, a to vrátí velikost tabulky všech tabulek ve všech databázích, ale bude to dlouhý seznam.
V tomto případě jsem výsledky seřadil podle velikosti tabulky v sestupném pořadí. Také jsem přidal sloupec s velikostí převedenou na MiB (mebibajty).
Další metodou převodu velikosti je použití sys.FORMAT_BYTES()
funkce.
Funkce sys.FORMAT_BYTES()
Můžete použít sys.FORMAT_BYTES()
funkci převést velikost z bajtů na buď bytes
, KiB
(kibibajty), MiB
(mebibajty), GiB
(gibibajty), TiB
(tebibajty) nebo PiB
(pebibajty), přičemž k hodnotě se přičte ukazatel jednotek. Indikátor jednotek se přidá automaticky. Funkce rozhodne, na kterou jednotku se má převést, v závislosti na velikosti hodnoty, takže nemáte žádnou kontrolu nad tím, kterou jednotku použít.
Zde je příklad použití této 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;
Výsledek:
+----------------------------+---------------+------------------+ | 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 | +----------------------------+---------------+------------------+
MySQL Workbench
Pokud používáte grafické uživatelské rozhraní MySQL Workbench, můžete ukazovat a klikat na velikosti tabulky. Zde je postup:
- Přejděte do databáze v
Schemas
podokno - Najeďte myší na příslušnou databázi
- Klikněte na malou informační ikonu vedle názvu databáze. Tím se načtou informace o databázi, včetně její přibližné velikosti, počtu tabulek, řazení atd.
- Klikněte na
Tables
tab. Zobrazí se informace o každé tabulce v databázi, včetně délky dat a délky indexu.