2009-11-14 17 views
330

¿Cómo obtener el tamaño de una base de datos mysql?
Supongamos que la base de datos de destino se llama "v3".¿Cómo obtener el tamaño de la base de datos mysql?

+0

Para tabla específica/tamaño de la base de datos específica de la secuencia de comandos proporcionada aquí le ayudará, la información se calcula a partir de la tabla INFORMATION_SCHEMA.TABLES, consulte la respuesta detallada aquí http://www.rathishkumar.in/2017/12/how-to-find-database-and-table-size-in-mysql.html – rathishDBA

Respuesta

760

ejecutar esta consulta y probablemente obtendrá lo que está buscando:

SELECT table_schema          "DB Name", 
    Round(Sum(data_length + index_length)/1024/1024, 1) "DB Size in MB" 
FROM information_schema.tables 
GROUP BY table_schema; 

Esta consulta proviene de the mysql forums, donde hay instrucciones más detalladas disponibles.

+0

esta selección no me muestra a todos. Traté de verificar la base de datos OTRS y las tablas con datos adjuntos (probablemente algún campo BLOB) aparecen no calculan correctamente ... ¿cualquier workaroud? – ceinmart

+1

Incluso después de eliminar la mayoría de los datos de las tablas en la base de datos, el tamaño sigue siendo el mismo – Vidz

+2

@Vidz ¿está utilizando el motor InnoDB? Si lo haces, puedes liberar espacio a menos que uses file_per_table y alter tables. – mandza

22

O bien puede saltar directamente al directorio de datos y comprobar el tamaño combinado de v3.myd, v3. myi y v3. archivos frm (para myisam) o v3.idb & v3.frm (para innodb).

+4

Nota: los archivos ibd solo existen si se usa innodb_file_per_table – Slashterix

+0

Esta respuesta es muy específica para el motor de almacenamiento. La respuesta de @ brian-willis es más apropiada. –

16

Alternativamente, si está utilizando phpMyAdmin, puede consultar la suma de los tamaños de tabla en el pie de página de su base de datos structure ficha. El tamaño real de la base de datos puede ser ligeramente superior a este tamaño, sin embargo, parece ser consistente con el método table_schema mencionado anteriormente.

captura de pantalla:

enter image description here

5

para obtener un resultado en MB:

SELECT SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH)/1024/1024), 2)) AS "SIZE IN MB" 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = "SCHEMA-NAME";` 

para obtener un resultado en GB:

SELECT SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH)/1024/1024 /1024), 2)) AS "SIZE IN GB" 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = "SCHEMA-NAME";` 
3
mysqldiskusage --server=root:[email protected] pics 

+----------+----------------+ 
| db_name |   total | 
+----------+----------------+ 
| pics  | 1,179,131,029 | 
+----------+----------------+ 
8

Se puede determinar mediante el uso siguiente comando MySQL

SELECT table_schema AS "Database", SUM(data_length + index_length)/1024/1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema 

Resultado

Database Size (MB) 
db1   11.75678253 
db2   9.53125000 
test  50.78547382 
+1

Agradable. Me gusta esta respuesta – progfan

Cuestiones relacionadas