ver una todas tamaño tablas tabla optimizar mostrar maximo listar las datos consultar campos bases mysql

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

Puedes obtener detalles adicionales aquí.


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;