I MySQL kan du kontrollere størrelsen af alle tabeller i en given database (eller på alle databaser) ved at forespørge på information_schema.tables
bord. Denne tabel gemmer data om hver tabel i en database, inklusive oplysninger om hver tabels størrelse, oprettelsesdato, sortering osv.
Du kan også finde størrelsen på hver tabel i en database ved at bruge MySQL Workbench GUI.
Denne artikel giver et hurtigt overblik over hver metode.
Kodeeksempel
Her er et eksempel på en SQL-forespørgsel, der returnerer størrelsen af tabellerne i en database.
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;
Resultat:
+----------------------------+---------------+-------------+ | 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 | +----------------------------+---------------+-------------+
Dette returnerer størrelsen af hver tabel i sakila
database. Erstat sakila
med navnet på den relevante database. Selvfølgelig kan du udelade WHERE
klausul helt, og dette vil returnere tabelstørrelsen for alle tabeller i alle databaser, men det vil være en lang liste.
I dette tilfælde har jeg bestilt resultaterne efter tabelstørrelse i faldende rækkefølge. Jeg har også tilføjet en kolonne med størrelsen konverteret til MiB (Mebibytes).
En anden metode til at konvertere størrelsen er at bruge sys.FORMAT_BYTES()
funktion.
Funktionen sys.FORMAT_BYTES()
Du kan bruge sys.FORMAT_BYTES()
funktion til at konvertere størrelsen fra bytes til enten bytes
, KiB
(kibibytes), MiB
(mebibytes), GiB
(gibibytes), TiB
(tebibytes) eller PiB
(pebibytes), med enhedsindikatoren tilføjet til værdien. Enhedsindikatoren tilføjes automatisk. Funktionen bestemmer, hvilken enhed der skal konverteres til, afhængigt af størrelsen af værdien, så du ikke har nogen kontrol over, hvilken enhed der skal bruges.
Her er et eksempel på brug af denne metode:
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;
Resultat:
+----------------------------+---------------+------------------+ | 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
Hvis du bruger MySQL Workbench GUI, kan du pege og klikke dig frem til bordstørrelserne. Sådan gør du:
- Naviger til databasen i
Schemas
rude - Hold markøren over den relevante database
- Klik på det lille informationsikon ved siden af databasenavnet. Dette indlæser information om databasen, inklusive dens omtrentlige størrelse, tabelantal, sortering osv.
- Klik på
Tables
fanen. Dette viser oplysninger om hver tabel i databasen, inklusive datalængden og indekslængden.