Existe-t-il un moyen rapide de déterminer l'espace disque occupé par une table MySQL particulière? La table peut être MyISAM ou Innodb.
Existe-t-il un moyen rapide de déterminer l'espace disque occupé par une table MySQL particulière? La table peut être MyISAM ou Innodb.
Réponses:
Pour une table, mydb.mytable
exécutez ceci pour:
SELECT (data_length+index_length) tablesize
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
SELECT (data_length+index_length)/power(1024,1) tablesize_kb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
SELECT (data_length+index_length)/power(1024,2) tablesize_mb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
SELECT (data_length+index_length)/power(1024,3) tablesize_gb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
Voici une requête générique où l'affichage de l'unité maximum est TB (TeraBytes)
SELECT
CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',SUBSTR(units,pw1*2+1,2)) DATSIZE,
CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',SUBSTR(units,pw2*2+1,2)) NDXSIZE,
CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',SUBSTR(units,pw3*2+1,2)) TBLSIZE
FROM
(
SELECT DAT,NDX,TBL,IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
FROM
(
SELECT data_length DAT,index_length NDX,data_length+index_length TBL,
FLOOR(LOG(IF(data_length=0,1,data_length))/LOG(1024)) px,
FLOOR(LOG(IF(index_length=0,1,index_length))/LOG(1024)) py,
FLOOR(LOG(IF(data_length+index_length=0,1,data_length+index_length))/LOG(1024)) pz
FROM information_schema.tables
WHERE table_schema='mydb'
AND table_name='mytable'
) AA
) A,(SELECT 'B KBMBGBTB' units) B;
Essaie !!!
SELECT (data_length+index_length)/power(1024,2) tablesize_mb, table_name FROM information_schema.tables WHERE table_schema='mydb' order by tablesize_mb;
pour obtenir une liste de toutes les tables de mydb
avec nom et taille, classées par taille.
Ce ne sera pas exact pour les tables InnoDB. La taille sur le disque est en fait plus grande que celle signalée via une requête.
Veuillez consulter ce lien de Percona pour plus d'informations.
https://www.percona.com/blog/2008/12/16/how-much-space-does-empty-innodb-table-take/
Sous Linux avec mysql installé par défaut:
[you@yourbox]$ ls -lha /var/lib/mysql/<databasename>
basé sur l' emplacement de la base de données mysql de NIXCRAFT
Sur la base de la réponse de RolandMySQLDBA, je pense que nous pouvons utiliser ce qui précède pour obtenir la taille de chaque schéma dans une table:
SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
FROM information_schema.tables GROUP BY table_schema;
Vraiment aimé!
Vous pourriez peut-être regarder la taille des fichiers ...
Chaque table est stockée dans quelques fichiers séparés dans un dossier qui porte le nom que vous avez appelé votre base de données. Ces dossiers sont stockés dans le répertoire de données mysql.
De là, vous pouvez faire un 'du -sh. *' Pour obtenir la taille de la table sur le disque.
Tiré de Comment vérifier l'espace disque utilisé par ma base de données?
Vous pouvez vérifier la taille de la table MySQL soit en regardant
phpMyAdmin
dans votre panneau de contrôle en cliquant sur le nom de la base de données dans le cadre de gauche et en lisant la taille des tables dans le cadre de droite.
La requête ci-dessous aidera également à obtenir les mêmes informations dans bytes
select SUM(data_length) + SUM(index_length) as total_size
from information_schema.tables
where table_schema = 'db_name'
and table_name='table_name';
J'utiliserais simplement l'outil ' mysqldiskusage ' comme suit
$ mysqldiskusage --server=user:password@localhost mydbname
# Source on localhost: ... connected.
# Database totals:
+------------+----------------+
| db_name | total |
+------------+----------------+
| mydbaname | 5,403,033,600 |
+------------+----------------+
Total database disk usage = 5,403,033,600 bytes or 5.03 GB