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