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
Schemasrude - 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å
Tablesfanen. Dette viser oplysninger om hver tabel i databasen, inklusive datalængden og indekslængden.