todas - tamaño maximo de una base de datos en mysql
¿Cómo obtener los tamaños de las tablas de una base de datos MySQL? (15)
Adaptado de la respuesta de ChapMic para satisfacer mi necesidad particular.
Solo especifique el nombre de su base de datos, luego ordene todas las tablas en orden descendente, de la tabla MÁS GRANDE a la MÁS PEQUEÑA dentro de la base de datos seleccionada. Solo se necesita reemplazar 1 variable = el nombre de su base de datos.
SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) AS `size`
FROM information_schema.TABLES
WHERE table_schema = "YOUR_DATABASE_NAME_HERE"
ORDER BY size DESC;
Puedo ejecutar esta consulta para obtener los tamaños de todas las tablas en una base de datos MySQL:
show table status from myDatabaseName;
Me gustaría un poco de ayuda para entender los resultados. Estoy buscando mesas con los tamaños más grandes.
¿Qué columna debo mirar?
Aquí hay otra forma de resolver esto usando la línea de comandos de bash.
for i in
mysql -NB -e ''show databases''
; do echo $i; mysql -e "SELECT table_name AS ''Tables'', round(((data_length+index_length)/1024/1024),2) ''Size in MB'' FROM information_schema.TABLES WHERE table_schema =/"$i/" ORDER BY (data_length + index_length) DESC" ; done
Calcule el tamaño total de la base de datos al final:
(SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
)
UNION ALL
(SELECT
''TOTAL:'',
SUM(round(((data_length + index_length) / 1024 / 1024), 2) )
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
)
Hay una manera fácil de obtener muchas informaciones utilizando Workbench:
Haga clic derecho en el nombre del esquema y haga clic en "Inspector de esquema".
En la ventana resultante tienes varias pestañas. La primera pestaña "Información" muestra una estimación aproximada del tamaño de la base de datos en MB.
La segunda pestaña, "Tablas", muestra la longitud de los datos y otros detalles de cada tabla.
Otra forma de mostrar el número de filas y espacio ocupado y ordenar por él.
SELECT
table_schema as `Database`,
table_name AS `Table`,
table_rows AS "Quant of Rows",
round(((data_length + index_length) / 1024 / 1024/ 1024), 2) `Size in GB`
FROM information_schema.TABLES
WHERE table_schema = ''yourDatabaseName''
ORDER BY (data_length + index_length) DESC;
La única cadena que debe sustituir en esta consulta es "yourDatabaseName".
Pruebe el siguiente comando de shell (reemplace DB_NAME
con el nombre de su base de datos):
mysql -uroot <<<"SELECT table_name AS ''Tables'', round(((data_length + index_length) / 1024 / 1024), 2) ''Size in MB'' FROM information_schema.TABLES WHERE table_schema = /"DB_NAME/" ORDER BY (data_length + index_length) DESC;" | head
Para la solución Drupal / drush, verifique el siguiente script de ejemplo que mostrará las tablas más grandes en uso:
#!/bin/sh
DB_NAME=$(drush status --fields=db-name --field-labels=0 | tr -d ''/r/n '')
drush sqlq "SELECT table_name AS ''Tables'', round(((data_length + index_length) / 1024 / 1024), 2) ''Size in MB'' FROM information_schema.TABLES WHERE table_schema = /"${DB_NAME}/" ORDER BY (data_length + index_length) DESC;" | head -n20
Puede usar esta consulta para mostrar el tamaño de una tabla (aunque primero debe sustituir las variables):
SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
AND table_name = "$TABLE_NAME";
o esta consulta para listar el tamaño de cada tabla en cada base de datos, primero la más grande:
SELECT
table_schema as `Database`,
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
ORDER BY (data_length + index_length) DESC;
Si desea una consulta para utilizar la base de datos seleccionada actualmente. simplemente copie y pegue esta consulta. (No se requiere modificación)
SELECT table_name ,
round(((data_length + index_length) / 1024 / 1024), 2) as SIZE_MB
FROM information_schema.TABLES
WHERE table_schema = DATABASE() ORDER BY SIZE_MB DESC;
Si está usando phpmyadmin, simplemente vaya a la estructura de la tabla
p.ej
Space usage
Data 1.5 MiB
Index 0 B
Total 1.5 Mi
Si tiene acceso ssh
, es posible que desee probar simplemente du -hc /var/lib/mysql
(o un datadir
diferente, como se establece en su my.cnf
) también.
Supongamos que el nombre de su base de datos es "news_alert". Luego, esta consulta mostrará el tamaño de todas las tablas en la base de datos.
Tamaño de todas las tablas:
SELECT
TABLE_NAME AS `Table`,
ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024),2) AS `Size (MB)`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "news_alert"
ORDER BY
(DATA_LENGTH + INDEX_LENGTH)
DESC;
Salida:
+---------+-----------+
| Table | Size (MB) |
+---------+-----------+
| news | 0.08 |
| keyword | 0.02 |
+---------+-----------+
2 rows in set (0.00 sec)
Para la tabla específica:
SELECT
TABLE_NAME AS `Table`,
ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024),2) AS `Size (MB)`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "news_alert"
AND
TABLE_NAME = "news"
ORDER BY
(DATA_LENGTH + INDEX_LENGTH)
DESC;
Salida:
+-------+-----------+
| Table | Size (MB) |
+-------+-----------+
| news | 0.08 |
+-------+-----------+
1 row in set (0.00 sec)
SELECT
table_name AS "Table",
round(((data_length + index_length) / 1024 / 1024), 2) as size
FROM information_schema.TABLES
WHERE table_schema = "YOUR_DATABASE_NAME"
ORDER BY size DESC;
Esto ordena los tamaños (Tamaño DB en MB).
SELECT TABLE_NAME AS "Table Name",
table_rows AS "Quant of Rows", ROUND( (
data_length + index_length
) /1024, 2 ) AS "Total Size Kb"
FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = ''YOUR SCHEMA NAME/DATABASE NAME HERE''
LIMIT 0 , 30
Puede obtener el nombre del esquema de "esquema de información " -> tabla SCHEMATA -> columna " SCHEMA_NAME "
Adicional Puede obtener el tamaño de las bases de datos mysql de la siguiente manera.
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;
Resultado
DB Name | DB Size in MB
mydatabase_wrdp 39.1
information_schema 0.0
SELECT TABLE_NAME AS table_name,
table_rows AS QuantofRows,
ROUND((data_length + index_length) /1024, 2 ) AS total_size_kb
FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = ''db''
ORDER BY (data_length + index_length) DESC;
los 2 anteriores están probados en mysql
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;