sql >> Database teknologi >  >> RDS >> Mysql

Sådan kontrollerer du størrelsen af ​​alle tabeller i en database i MySQL

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:

  1. Naviger til databasen i Schemas rude
  2. Hold markøren over den relevante database
  3. Klik på det lille informationsikon ved siden af ​​databasenavnet. Dette indlæser information om databasen, inklusive dens omtrentlige størrelse, tabelantal, sortering osv.
  4. Klik på Tables fanen. Dette viser oplysninger om hver tabel i databasen, inklusive datalængden og indekslængden.

  1. SQLskills Wait Types Library viser nu SentryOne-data

  2. Sådan returneres kun Datoen fra en SQL Server DateTime-datatype

  3. Oprettelse af tabelnavne, der er reserverede ord/søgeord i MS SQL Server

  4. Hvordan kaldes et felt eller kolonne i MySQL?