¿Existe una manera rápida de determinar cuánto espacio en disco está ocupando una tabla MySQL en particular? La tabla puede ser MyISAM o Innodb.¿Cómo se puede determinar cuánto espacio en disco está ocupando una determinada tabla MySQL?
Respuesta
Para una carrera de mesa mydb.mytable
esto para:
BYTES
SELECT (data_length+index_length) tablesize
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
KILOBYTES
SELECT (data_length+index_length)/power(1024,1) tablesize_kb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
MEGABYTES
SELECT (data_length+index_length)/power(1024,2) tablesize_mb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
GIGABYTES
SELECT (data_length+index_length)/power(1024,3) tablesize_gb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
GENÉRICO
Aquí está 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' ordena por tablesize_mb;' para obtener una lista de todas las tablas de 'mydb' con nombre y tamaño, ordenadas por tamaño. – guaka
Agregue "DESC" a la cláusula ORDER BY para ver primero las tablas que consumen más espacio en disco. ;) – mvsagar
Para ser precisos, es posible que desee llamar a las unidades ki ** bi ** bytes (KiB), me ** bi ** bytes (MiB) y gi ** bi ** bytes (GiB) cuando utilice prefijos binarios (multiplicación con el poder de 2). O bien, puede usar prefijos decimales (multiplicación con el poder de 1000) y luego llamar a las unidades ki ** lo ** bytes (KB), me ** ga ** bytes (MB) y gi ** ga ** bytes (GB). Ver más: https://en.wikipedia.org/wiki/prefix_binario –
Tomado de How do I check how much disk space my database is using?
Puede comprobar tamaño de la tabla de MySQL sea examinado
phpMyAdmin
en su panel de control haciendo clic en el nombre de la base de datos en el marco izquierdo y leyendo el tamaño de las mesas de allí en el marco correcto
La consulta siguiente será así 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';
Esto supone que phpMyAdmin está instalado – thebigjc
Usted tal vez podría mirar el tamaño de los archivos ...
Cada tabla se almacena en una un par de archivos separados dentro de una carpeta que recibe el nombre de lo que usted llamó 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.
Esto solo funciona para bases de datos MyISAM. El OP pidió una solución que también funciona con InnoDB. – Bgs
En Linux con MySQL instalados por defecto:
[[email protected]]$ ls -lha /var/lib/mysql/<databasename>
basado en NIXCRAFT's mysql db location
No funcionará si se usa innodb –
La pregunta es cómo medir el espacio ocupado * por una mesa particular *. – Flimm
@ShariqueAbdullah esto funcionará si está usando innodb_file_per_table, que no es el predeterminado, pero creo que es muy común y/o recomendado (alguien puede demostrarme que estoy equivocado en esto, solo mi impresión). – Seaux
Esto no será precisa para tablas InnoDB. El tamaño en el disco es en realidad más grande que el reportado mediante consulta.
Consulte este enlace desde Percona para obtener más información.
http://www.mysqlperformanceblog.com/2008/12/16/how-much-space-does-empty-innodb-table-take/
Sobre la base de la respuesta de la RolandMySQLDBA Creo que podemos utilizar lo anterior para obtener el tamaño de cada esquema de una tabla:
SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
FROM information_schema.tables GROUP BY table_schema;
gustó de verdad!
me acaba de utilizar 'mysqldiskusage' herramienta como sigue
$ mysqldiskusage --server=user:[email protected] 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
El OP pidió espacio en disco de una tabla MySQL particular, no toda la base de datos – machineaddict
poco rápido de SQL para obtener los mejores 20 grandes mesas en MB.
SELECT table_schema, table_name,
ROUND((data_length+index_length)/POWER(1024,2),2) AS tablesize_mb
FROM information_schema.tables
ORDER BY tablesize_mb DESC LIMIT 20;
Espero que sea útil para alguien!
¡Muy útil! Gracias Ben! – aero
- 1. ¿Cómo averiguar el espacio libre en disco para una ruta determinada en un shell de Linux?
- 2. ¿Cómo encontrar cuánto espacio en disco queda con Java?
- 3. ¿Cómo puedo saber cuánto espacio usa TFS?
- 4. ¿Cómo detengo un div ocupando espacio?
- 5. ¿Cómo determinar cuánto espacio libre hay en una unidad en Qt?
- 6. ¿Cómo debo optimizar una tabla hash para una población determinada?
- 7. MySQL: ¿Cuánto espacio usa un campo NULL?
- 8. ¿Qué es el comando Unix para ver cuánto espacio en disco hay y cuánto queda?
- 9. ¿Cómo puedo determinar la cantidad de memoria mi programa está ocupando actualmente
- 10. ¿cuánto se puede bloquear c?
- 11. Determinar qué aspectos se enganchan en una clase determinada
- 12. Espacio en disco anunciado frente a espacio en disco real
- 13. ¿Cómo se puede determinar el origen de una determinada dependencia de Maven?
- 14. ¿Cuánto espacio de disco se necesita para almacenar un valor NULL utilizando postgresql DB?
- 15. ¿Cómo se sabe cuánto espacio asignar con malloc()?
- 16. ¿Cómo se puede saber el tamaño total de los datos en la base de datos MySQL?
- 17. ¿Cómo verificar cuánto tiempo está tomando la consulta MySQL?
- 18. Cómo determinar MAXSIZE de espacio de tabla existente
- 19. ¿Cómo se puede encontrar la cantidad de espacio en disco que queda en Cocoa?
- 20. No se puede determinar el espacio de trabajo utilizando tf.exe
- 21. ¿Cuánto espacio necesito para Git vs SVN?
- 22. ¿Cómo determinar si se está manejando una excepción .NET?
- 23. ¿Cuánto espacio ocupa una vista en Microsoft SQL Server?
- 24. ¿Cómo se puede evitar programáticamente Windows desde el disco duro?
- 25. mysql: Cómo liberar espacio (innodb)
- 26. Cómo determinar qué tabla utiliza la mayor cantidad de espacio en una base de datos de Access
- 27. Determinar si una celda de vista de tabla está visible
- 28. ¿Está asociada una aplicación con una extensión determinada?
- 29. No se puede insertar el carácter ♥ en la tabla MySQL
- 30. En CakePHP, ¿cómo se puede determinar si un campo se cambió en una acción de edición?
En PHPMyAdmin puede ver el uso del espacio simplemente haciendo clic en ob la tabla. –
Las respuestas a esta pregunta me ayudaron a obtener mi solución. Una búsqueda exhaustiva de una herramienta que podría ayudarme sin ejecutar la misma consulta cada vez para obtener los datos me hizo pasar por [MONyog] (https://www.webyog.com/product/monyog), [MySQL Enterprise Monitor] (http : //www.mysql.com/trials/), [Percona toolkit] (https://www.percona.com/software/mysql-tools/percona-toolkit). Todos ellos dan detalles sobre la información del disco, pero finalmente optaron por MONyog para obtener mejores gráficos gráficos y una fácil GUI. – Mathew