I MySQL kan du forespørge på information_schema.tables
tabel for at returnere information om tabellerne i en database. Denne tabel indeholder oplysninger om datalængden, indekslængden samt andre detaljer såsom sortering, oprettelsestid osv. Du kan bruge oplysningerne i denne tabel til at finde størrelsen på en given database eller alle databaser på serveren.
Du kan også bruge MySQL Workbench GUI til at finde detaljer om databasen (inklusive dens størrelse).
Denne artikel giver et hurtigt overblik over begge metoder.
Kodeeksempel
Her er et eksempel på at finde størrelsen af hver database ved at køre en forespørgsel mod information_schema.tables
tabel:
SELECT table_schema 'Database Name', SUM(data_length + index_length) 'Size in Bytes', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) 'Size in MiB' FROM information_schema.tables GROUP BY table_schema;
Resultat:
+--------------------+---------------+-------------+ | Database Name | Size in Bytes | Size in MiB | +--------------------+---------------+-------------+ | information_schema | 0 | 0.00 | | Music | 98304 | 0.09 | | mysql | 2506752 | 2.39 | | performance_schema | 0 | 0.00 | | sakila | 6766592 | 6.45 | | Solutions | 16384 | 0.02 | | sys | 16384 | 0.02 | | world | 802816 | 0.77 | +--------------------+---------------+-------------+
I dette eksempel har jeg angivet størrelsen i bytes og i mebibytes (MiB), men du kan vælge, hvordan du vil præsentere den.
Du kan selvfølgelig altid indsnævre det til en bestemt database, hvis du har brug for det. Du skal blot tilføje en WHERE
klausul med navnet på databasen:
SELECT table_schema 'Database Name', SUM(data_length + index_length) 'Size in Bytes', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) 'Size in MiB' FROM information_schema.tables WHERE table_schema = 'sakila';
Resultat:
+---------------+---------------+-------------+ | Database Name | Size in Bytes | Size in MiB | +---------------+---------------+-------------+ | sakila | 6766592 | 6.45 | +---------------+---------------+-------------+
FORMAT_BYTES()-funktionen
Du kan bruge sys.FORMAT_BYTES()
funktion for at spare dig selv for at konvertere størrelsen til mebibytes, kibibytes eller hvad som helst. Denne funktion tager en værdi, konverterer den til et menneskeligt læsbart format og returnerer en streng bestående af en værdi og en enhedsindikator. Den konverterede værdi vil afhænge af størrelsen af værdien (så resultatet kan være i bytes
, KiB
(kibibytes), MiB
(mebibytes), GiB
(gibibytes), TiB
(tebibytes) eller PiB
(pebibytes).
Her er et eksempel på omskrivning af det forrige eksempel for at bruge FORMAT_BYTES()
funktion:
USE Music; SELECT table_schema 'Database Name', SUM(data_length + index_length) 'Size in Bytes', sys.FORMAT_BYTES(SUM(data_length + index_length)) 'Size (Formatted)' FROM information_schema.tables GROUP BY table_schema;
Resultat:
+--------------------+---------------+------------------+ | Database Name | Size in Bytes | Size (Formatted) | +--------------------+---------------+------------------+ | information_schema | 0 | 0 bytes | | Music | 98304 | 96.00 KiB | | mysql | 2506752 | 2.39 MiB | | performance_schema | 0 | 0 bytes | | sakila | 6766592 | 6.45 MiB | | Solutions | 16384 | 16.00 KiB | | sys | 16384 | 16.00 KiB | | world | 802816 | 784.00 KiB | +--------------------+---------------+------------------+
MySQL Workbench
En anden måde at finde databasestørrelsen på er at bruge MySQL Workbench GUI. 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. Databasestørrelsen er angivet i
Info
fanen (normalt standardfanen).