Come verificare la dimensione di un database MySQL in Linux
In questo articolo vediamo come verificare la dimensione di un database MySQL / MariaDB, e delle sue tabelle, utilizzando la shell MySQL.
MySQL utilizza il database virtuale "information_schema" per archiviare informazioni relative ai database, per cui interroghiamo questo database e vediamo quali informazioni possiamo ottenere.
Innanzitutto accediamo alla shell MySQL
# mysql -u root -p
Entrati nell shell, procediamo con la seguente query, con la quale otteniamo, per ogni database presente, il peso in MB
mysql> SELECT table_schema AS "Nome Database",
-> ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Peso in MB"
-> FROM information_schema.TABLES
-> GROUP BY table_schema;
Il risultato ottenuto è, ad esempio, il seguente
+--------------------+------------+
| Nome Database | Peso in MB |
+--------------------+------------+
| archivio | 1383.11 |
| utenze | 66.08 |
| information_schema | 0.01 |
| mysql | 0.65 |
| miosito | 14.90 |
+--------------------+------------+
Se invece vogliamo conoscere la dimensioni delle tabelle di uno specifico database, ad esempio il database "archivio", utilizziamo questa query
mysql> SELECT table_name AS "Nome Tabella",
-> ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size in (MB)"
-> FROM information_schema.TABLES
-> WHERE table_schema = "archivio"
-> ORDER BY (data_length + index_length) DESC;
In risultato sarà, ad esempio, il seguente
+----------------+--------------+
| Nome Tabella | Size in (MB) |
+----------------+--------------+
| geoip | 803.81 |
| uabrow | 514.91 |
| content | 62.44 |
| servizi | 0.95 |
| categorie | 0.41 |
| area | 0.30 |
| partner | 0.28 |
| operatori | 0.01 |
+----------------+--------------+
Possiamo uscire dalla shell di MySQL
Come impostazione predefinita, MySQL (e MariaDB) memorizza tutti i dati nel file system (nelle distribuzioni CentOS, Fedora e simili sotto il path "/var/lib/mysql"), e le dimensioni dei dati esistenti sul database potrebbero differire dalle dimensioni effettive dei dati sul disco. Se vogliamo conoscere lo spazio effettivo occupato dal database su disco, usiamo da terminare linux il comando "du" per scoprire il peso della directory "/var/lib/mysql":
# du -h /var/lib/mysql/
Il risultato sarà, ad esempio
1.3G /var/lib/mysql/archivio
66M /var/lib/mysql/utenze
14.9M /var/lib/mysql/miosito
1.4G /var/lib/mysql/