sql >> Database >  >> RDS >> Mysql

Hoe de grootte van alle tabellen in een database in MySQL te controleren

In MySQL kunt u de grootte van alle tabellen in een bepaalde database (of van alle databases) controleren door de information_schema.tables op te vragen. tafel. Deze tabel slaat gegevens op over elke tabel in een database, inclusief informatie over de grootte, aanmaakdatum, sortering, enz. van elke tabel.

U kunt ook de grootte van elke tabel in een database vinden met behulp van de MySQL Workbench GUI.

Dit artikel geeft een snel overzicht van elke methode.

Codevoorbeeld

Hier is een voorbeeld van een SQL-query die de grootte van de tabellen in een database retourneert.

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;

Resultaat:

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

Dit retourneert de grootte van elke tabel in de sakila databank. Vervang sakila met de naam van de betreffende database. Natuurlijk kunt u de WHERE . weglaten clausule helemaal, en dit zal de tabelgrootte van alle tabellen in alle databases retourneren, maar het zal een lange lijst zijn.

In dit geval heb ik de resultaten gesorteerd op tafelgrootte in aflopende volgorde. Ik heb ook een kolom toegevoegd met de grootte geconverteerd naar MiB (Mebibytes).

Een andere methode om de grootte te converteren is om de sys.FORMAT_BYTES() te gebruiken functie.

De sys.FORMAT_BYTES() Functie

U kunt de sys.FORMAT_BYTES() . gebruiken functie om de grootte van bytes om te zetten in ofwel bytes , KiB (kibibytes), MiB (mebibytes), GiB (gibibytes), TiB (tebibytes), of PiB (pebibytes), met de eenheidsindicator toegevoegd aan de waarde. De eenhedenindicator wordt automatisch toegevoegd. De functie bepaalt naar welke eenheid moet worden geconverteerd, afhankelijk van de grootte van de waarde, dus u hebt geen controle over welke eenheid u moet gebruiken.

Hier is een voorbeeld van het gebruik van deze methode:

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;

Resultaat:

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

Als u de MySQL Workbench GUI gebruikt, kunt u naar de tabelgroottes wijzen en klikken. Hier is hoe:

  1. Navigeer naar de database in de Schemas deelvenster
  2. Beweeg over de betreffende database
  3. Klik op het kleine informatiepictogram naast de databasenaam. Dit laadt informatie over de database, inclusief de geschatte grootte, het aantal tabellen, sortering, enz.
  4. Klik op de Tables tabblad. Dit geeft informatie weer over elke tabel in de database, inclusief de gegevenslengte en indexlengte.

  1. Is het mogelijk om een ​​variabele te gebruiken en geen retourtype op te geven in postgreSQL?

  2. Best practices:.NET:Hoe kan ik PK retourneren tegen een Oracle-database?

  3. SQLite BEHALVE Operator

  4. Meerdere rijen invoegen in Oracle