sql >> Databasteknik >  >> RDS >> Mysql

Hur man kontrollerar storleken på alla tabeller i en databas i MySQL

I MySQL kan du kontrollera storleken på alla tabeller i en given databas (eller på alla databaser) genom att fråga information_schema.tables tabell. Den här tabellen lagrar data om varje tabell i en databas, inklusive information om varje tabells storlek, skapelsedatum, sortering, etc.

Du kan också hitta storleken på varje tabell i en databas genom att använda MySQL Workbench GUI.

Den här artikeln ger en snabb översikt över varje metod.

Kodexempel

Här är ett exempel på en SQL-fråga som returnerar storleken på tabellerna i en databas.

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 |
+----------------------------+---------------+-------------+

Detta returnerar storleken på varje tabell i sakila databas. Ersätt sakila med namnet på den relevanta databasen. Naturligtvis kan du utelämna WHERE sats helt och hållet, och detta kommer att returnera tabellstorleken för alla tabeller i alla databaser, men det blir en lång lista.

I det här fallet har jag beställt resultaten efter tabellstorlek i fallande ordning. Jag har också lagt till en kolumn med storleken konverterad till MiB (Mebibytes).

En annan metod för att konvertera storleken är att använda sys.FORMAT_BYTES() funktion.

Funktionen sys.FORMAT_BYTES()

Du kan använda sys.FORMAT_BYTES() funktion för att konvertera storleken från byte till antingen bytes , KiB (kibibyte), MiB (mebibyte), GiB (gibibyte), TiB (tebibyte) eller PiB (pebibytes), med enhetsindikatorn lagt till värdet. Enhetsindikatorn läggs till automatiskt. Funktionen avgör vilken enhet som ska konverteras till, beroende på storleken på värdet, så att du inte har någon kontroll över vilken enhet som ska användas.

Här är ett exempel på hur du använder den här metoden:

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

Om du använder MySQL Workbench GUI kan du peka och klicka dig fram till tabellstorlekarna. Så här gör du:

  1. Navigera till databasen i Schemas rutan
  2. Håll muspekaren över den tillämpliga databasen
  3. Klicka på den lilla informationsikonen bredvid databasnamnet. Detta laddar information om databasen, inklusive dess ungefärliga storlek, tabellantal, sammanställning, etc.
  4. Klicka på Tables flik. Detta visar information om varje tabell i databasen, inklusive datalängd och indexlängd.

  1. SQL Server String Sammansättning med Null

  2. MySQL-fel 1436:Överskriden trådstack, med enkel fråga

  3. MySQL root-lösenordsändring

  4. Kopiera data till en annan tabell