Verificare lo spazio occupato dalle tabelle di un database

Ecco una query per avere i dettagli di utilizzo disco da parte delle tabelle di un database, evidenziando lo spazio occupato dai dati, il numero delle righe, lo spazio occupato dagli indici e poi un totale per tabella:

SELECT 
    table_name,
    ROUND((data_length / 1024 / 1024), 2) AS data_size_mb,
    ROUND((index_length / 1024 / 1024), 2) AS index_size_mb,
    table_rows,
    ROUND(((data_length + index_length) / 1024 / 1024), 2) AS total_size_mb
FROM information_schema.tables
WHERE 
    table_schema = 'NOME_DATABASE'
    AND table_type = 'BASE TABLE'
ORDER BY 
    total_size_mb DESC;

Nella query il valore NOME_DATABASE va sostituito con il database da analizzare. Questo un piccolo estratto del risultato:

+---------------+--------------+---------------+------------+---------------+
| TABLE_NAME    | data_size_mb | index_size_mb | TABLE_ROWS | total_size_mb |
+---------------+--------------+---------------+------------+---------------+
| users      |         0.06 |          0.05 |        612 |          0.11 |
| products          |         0.02 |          0.05 |        143 |          0.06 |
| orders  |         0.02 |          0.05 |         50 |          0.06 |

Per avere un report dello spazio occupato dagli indici delle varie tabelle di un database, possiamo invece usare:

SELECT 
    t.table_name,
    i.index_name,
    COUNT(i.column_name) AS indexed_columns,
    ROUND(t.index_length / COUNT(DISTINCT i.index_name) / 1024, 2) AS avg_index_size_kb
FROM information_schema.tables t
JOIN information_schema.statistics i 
    ON t.table_name = i.table_name 
    AND t.table_schema = i.table_schema
WHERE 
    t.table_schema = 'NOME_DATABASE'
GROUP BY 
    t.table_name, 
    i.index_name,
    t.index_length
ORDER BY 
    avg_index_size_kb DESC;

enjoy!

Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui

Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂



Commenta