Puedo ejecutar esta consulta para obtener los tamaños de todas las tablas en una base de datos MySQL:
show table status from myDatabaseName;
Quisiera ayuda para entender los resultados. Estoy buscando mesas con los tamaños más grandes.
¿Qué columna debería mirar?
Respuestas:
Puede usar esta consulta para mostrar el tamaño de una tabla (aunque primero debe sustituir las variables):
o esta consulta para enumerar el tamaño de cada tabla en cada base de datos, la más grande primero:
fuente
AND table_name IN ('table_1', 'table_2', 'table_3');
VARCHAR
yBLOB
escribirías?Puede obtener el nombre del esquema de " información_esquema " -> tabla SCHEMATA -> columna " SCHEMA_NAME "
Adicional Puede obtener el tamaño de las bases de datos mysql de la siguiente manera.
Resultado
Puede obtener detalles adicionales aquí.
fuente
Esto ordena los tamaños (Tamaño de DB en MB).
fuente
Si desea que una consulta use la base de datos seleccionada actualmente. simplemente copie y pegue esta consulta. (No se requiere modificación)
fuente
SIZE_MB
FROM information_schema.TABLES WHERE table_schema = DATABASE () ORDER BY (data_length + index_length) ASC;Hay una manera fácil de obtener mucha información usando 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 para cada tabla.
fuente
Tamaño de todas las mesas:
Supongamos que su base de datos o
TABLE_SCHEMA
nombre es "news_alert". Entonces esta consulta mostrará el tamaño de todas las tablas en la base de datos.Salida:
Para la tabla específica:
Supongamos que tu
TABLE_NAME
es "noticias" . Entonces la consulta SQL será-Salida:
fuente
Pruebe el siguiente comando de shell (reemplace
DB_NAME
con el nombre de su base de datos):Para la solución Drupal / drush, verifique el siguiente script de ejemplo que mostrará las tablas más grandes en uso:
fuente
Aquí hay otra forma de resolver esto usando la línea de comando 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" ; donefuente
Si está utilizando phpmyadmin, simplemente vaya a la estructura de la tabla
p.ej
fuente
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, desde 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.
fuente
Si tiene
ssh
acceso, es posible que desee probar simplementedu -hc /var/lib/mysql
(o diferentedatadir
, como se establece en sumy.cnf
) también.fuente
Otra forma de mostrar el número de filas y el espacio ocupado y ordenar por él.
La única cadena que debe sustituir en esta consulta es "yourDatabaseName".
fuente
Creo que las respuestas existentes en realidad no dan el tamaño de las tablas en el disco, lo cual es más útil. Esta consulta proporciona una estimación de disco más precisa en comparación con el tamaño de la tabla basada en data_length & index. Tuve que usar esto para una instancia de AWS RDS donde no puede examinar físicamente el disco y verificar los tamaños de los archivos.
fuente
Calcule el tamaño total de la base de datos al final:
fuente
los 2 anteriores se prueban en mysql
fuente
Esto debería ser probado en mysql, no postgresql:
fuente