sql >> Databasteknik >  >> RDS >> Mysql

Hur man kontrollerar storleken på en databas i MySQL

I MySQL kan du fråga information_schema.tables tabell för att returnera information om tabellerna i en databas. Den här tabellen innehåller information om datalängden, indexlängden, såväl som andra detaljer som sortering, skapelsetid, etc. Du kan använda informationen i den här tabellen för att hitta storleken på en given databas eller alla databaser på servern.

Du kan också använda MySQL Workbench GUI för att hitta detaljer om databasen (inklusive dess storlek).

Den här artikeln ger en snabb översikt över båda metoderna.

Kodexempel

Här är ett exempel på hur du kan hitta storleken på varje databas genom att köra en fråga mot information_schema.tables tabell:

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 det här exemplet har jag listat storleken i byte och i mebibyte (MiB), men du kan välja hur du vill presentera den.

Naturligtvis kan du alltid begränsa den till en specifik databas om du behöver. Lägg bara till en WHERE sats med namnet 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 använda sys.FORMAT_BYTES() funktion för att spara dig själv genom att konvertera storleken till mebibyte, kibibyte eller vad som helst. Den här funktionen tar ett värde, konverterar det till läsbart format och returnerar en sträng som består av ett värde och en enhetsindikator. Det konverterade värdet beror på värdets storlek (så resultatet kan vara i bytes , KiB (kibibyte), MiB (mebibyte), GiB (gibibyte), TiB (tebibyte) eller PiB (pebibytes).

Här är ett exempel på att skriva om det föregående exemplet för att använda 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

Ett annat sätt att hitta databasstorleken är att använda MySQL Workbench GUI. 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. Databasstorleken anges i Info fliken (vanligtvis standardfliken).

  1. Varför är IS NOT NULL falsk när man kontrollerar en radtyp?

  2. ORA-00904 ogiltig identifierare på avkodningsalias

  3. CASE .. NÄR uttryck i Oracle SQL

  4. Lägg till en genererad kolumn till en tabell i SQLite