¿Cómo obtener el tamaño de la base de datos mysql?

542

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

Novato
fuente
Para una tabla específica / tamaño de base de datos específico, el script proporcionado aquí ayudará, la información se calcula a partir de la tabla information_schema.tables, consulte la respuesta detallada aquí rathishkumar.in/2017/12/…
Rathish

Respuestas:

1185

Ejecute 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 los foros de mysql , donde hay instrucciones más completas disponibles.

Brian Willis
fuente
44
Incluso después de eliminar la mayoría de los datos de las tablas de la base de datos, el tamaño sigue siendo el mismo
Vidz,
2
@Vidz, ¿estás usando el motor InnoDB? Si lo hace, puede liberar espacio a menos que use file_per_table y modifique las tablas.
mandza 01 de
55
Tenga en cuenta que este método no devolverá ninguna de las bases de datos que estén completamente vacías, al menos debe existir una sola tabla para que la base de datos aparezca en el resultado.
v010dya
13
Para seleccionar de una sola base de datos, agregue esto entre la línea FROMy GROUP: where table_schema='DATABASE_NAME'- reemplazando DATABASE_NAMEcon su base de datos.
KJ Price
2
Nota: MySQL Workbench generará un Syntax error: {column title} (double quoted text) is not valid input here.error. Los títulos de las columnas deben estar envueltos en marcas de graduación. Es decir Database Name.
KareemElashmawy
75

Se puede determinar usando el 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

Obtener resultado en GB

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema
Nadeem0035
fuente
2
Agradable. Me gusta esta respuesta
progfan
31

Alternativamente, si está utilizando phpMyAdmin, puede echar un vistazo a la suma de los tamaños de tabla en el pie de página de la structurepestaña de su base de datos . El tamaño real de la base de datos puede ser ligeramente superior a este tamaño, sin embargo, parece ser coherente con el table_schemamétodo mencionado anteriormente.

Captura de pantalla :

ingrese la descripción de la imagen aquí

Joel
fuente
26

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


fuente
77
Nota: los archivos ibd solo existen si se usa innodb_file_per_table
Slashterix
2
Esta respuesta es muy específica para el motor de almacenamiento. La respuesta de @ brian-willis es más apropiada.
Manu Manjunath
15

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";
williambarau
fuente
12
mysqldiskusage  --server=root:MyPassword@localhost  pics

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

Si no está instalado, esto puede instalarse instalando el mysql-utilspaquete que debería ser empaquetado por la mayoría de las distribuciones principales.

Rick James
fuente
4

Primero inicie sesión en MySQL usando

mysql -u username -p

Comando para mostrar el tamaño de una sola base de datos junto con su tabla en MB.

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

Cambiar database_name a su base de datos

Comando para mostrar todas las bases de datos con su tamaño en MB.

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;
Hiren Parghi
fuente
1

Entra en el directorio de datos mysql y ejecuta du -h --max-depth=1 | grep databasename

Evan Haston
fuente