¿Hay una manera rápida de determinar cuánto espacio en disco ocupa una tabla MySQL en particular? La tabla puede ser MyISAM o Innodb.
¿Hay una manera rápida de determinar cuánto espacio en disco ocupa una tabla MySQL en particular? La tabla puede ser MyISAM o Innodb.
Respuestas:
Para una tabla, mydb.mytable
ejecute esto para:
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';
Aquí hay una consulta genérica donde la unidad de visualización máxima es 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;
Darle una oportunidad !!!
SELECT (data_length+index_length)/power(1024,2) tablesize_mb, table_name FROM information_schema.tables WHERE table_schema='mydb' order by tablesize_mb;
para obtener una lista de todas las tablas mydb
con nombre y tamaño, ordenadas por tamaño.
Esto no será exacto para las tablas InnoDB. El tamaño en el disco es en realidad más grande que el informado a través de la consulta.
Consulte este enlace de Percona para obtener más información.
https://www.percona.com/blog/2008/12/16/how-much-space-does-empty-innodb-table-take/
En Linux con MySQL instalado por defecto:
[you@yourbox]$ ls -lha /var/lib/mysql/<databasename>
basado en la ubicación de mysql db de NIXCRAFT
Basado en la respuesta de RolandMySQLDBA, creo que podemos usar lo anterior para obtener el tamaño de cada esquema en una tabla:
SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
FROM information_schema.tables GROUP BY table_schema;
Realmente me gustó!
Quizás podrías mirar el tamaño de los archivos ...
Cada tabla se almacena en un par de archivos separados dentro de una carpeta que se llama como se llame su base de datos. Estas carpetas se almacenan dentro del directorio de datos mysql.
Desde allí puede hacer un 'du -sh. *' Para obtener el tamaño de la tabla en el disco.
Tomado de ¿Cómo verifico cuánto espacio en disco está usando mi base de datos?
Puede verificar el tamaño de la tabla MySQL mirando
phpMyAdmin
el panel de control haciendo clic en el nombre de la base de datos en el marco izquierdo y leyendo el tamaño de las tablas allí en el marco derecho.
La siguiente consulta también ayudará a obtener la misma información en 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';
Simplemente usaría la herramienta ' mysqldiskusage ' de la siguiente manera
$ 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