mysql - tamaño - ver todas las tablas de una base de datos oracle




¿Cómo obtener los tamaños de las tablas de una base de datos MySQL? (10)

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


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".


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 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 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





mysql