Localizar las tablas MySQL más grandes de nuestro servidor

Sólo apto para MySQL 5:

MySQL:
  1. SELECT
  2. CONCAT(table_schema,'.',table_name),
  3. CONCAT(ROUND(table_rows/1000000,2),'M') rows,
  4. CONCAT(ROUND(data_length/(1024*1024*1024),2),'G') DATA,
  5. CONCAT(ROUND(index_length/(1024*1024*1024),2),'G') idx,
  6. CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),2),'G') total_size,
  7. ROUND(index_length/data_length,2) idxfrac FROM information_schema.TABLES
  8. ORDER BY data_length+index_length DESC LIMIT 10;

Lo que hace, vulgarmente, viene siendo recopilar información de la tabla TABLES de la BD INFORMATION_SCHEMA, una nueva BD por defecto en las distribuciones 5 y posteriores, que almacena información acerca de todas las tablas de todas las bds del servidor. Muy práctico para saber cual es ese cliente de nuestro servidor que se está comiendo el disco duro a golpe de almacenar basura :)

El ejemplo de resultado se explica sólo:

MySQL:
  1. +-------------------------------------+--------+--------+--------+------------+---------+
  2. | CONCAT(table_schema,'.',table_name) | rows   | DATA   | idx    | total_size | idxfrac |
  3. +-------------------------------------+--------+--------+--------+------------+---------+
  4. | art87.link_out87                    | 37.25M | 14.83G | 14.17G | 29.00G     |    0.96 |
  5. | art87.article87                     | 12.67M | 15.83G | 4.79G  | 20.62G     |    0.30 |
  6. | art116.article116                   | 10.49M | 12.52G | 3.65G  | 16.18G     |    0.29 |
  7. | art84.article84                     | 10.10M | 10.11G | 3.59G  | 13.70G     |    0.35 |
  8. | art104.link_out104                  | 23.66M | 6.63G  | 6.55G  | 13.18G     |    0.99 |
  9. | art118.article118                   | 7.06M  | 10.49G | 2.68G  | 13.17G     |    0.26 |
  10. | art106.article106                   | 9.86M  | 10.19G | 2.76G  | 12.95G     |    0.27 |
  11. | art85.article85                     | 6.20M  | 9.82G  | 2.51G  | 12.33G     |    0.26 |
  12. | art91.article91                     | 8.66M  | 9.17G  | 2.66G  | 11.83G     |    0.29 |
  13. | art94.article94                     | 5.21M  | 10.10G | 1.69G  | 11.79G     |    0.17 |
  14. +-------------------------------------+--------+--------+--------+------------+---------+
  15. 10 rows IN SET (2 min 29.19 sec)

El creador original de la función es Peter Zaitsev, de MySQL Performance Blog, antiguo Responsable de Rendimiento en MySQL Inc.

Términos relacionados: , , , , , , ,

Deja tu opinión

Sólo se permiten las etiquetas XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Post anteriores/siguientes:

Post (quizás) relacionados:

  • Consultas MySQL útiles

  • Las 10 bases de datos más grandes del servidor [mysql] SELECT count(*) TABLES, table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows, concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA, concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx, concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size, round(sum(index_length)/sum(data_length),2) idxfrac FROM information_schema.TABLES GROUP BY table_schema ORDER BY sum(data_length+index_length) DESC LIMIT 10; [/mysql] Número total de...
  • Esquema de Tablas MySQL de mediawiki

  • Me la guardo como referencia: ...
  • Comodidad para el cliente de comandos de MySQL

  • Si conectamos a menudo con nuestro servidor de MySQL utilizando la utilidad del comando "mysql", nos veremos compelidos a repetir, una y otra vez, los...
  • Comprobar la validez de tus ficheros de configuración MySQL

  • MySQL no dispone de una opción de comprobación de ficheros de configuración, como las que puede tener por ejemplo, Apache, por lo que si nos...
  • Galería de diseños para tablas

  • Digan lo que digan por ahí sobre las tablas, esos demonios del averno, lo cierto es que a la hora de mostrar datos tabulados, todavía...