Localizar las tablas MySQL más grandes de nuestro servidor
Viernes 29 de Febrero del 2008 - Bases de datos, MySQL
Sólo apto para MySQL 5:
MySQL:
-
SELECT
-
CONCAT(table_schema,'.',table_name),
-
CONCAT(ROUND(table_rows/1000000,2),'M') rows,
-
CONCAT(ROUND(data_length/(1024*1024*1024),2),'G') DATA,
-
CONCAT(ROUND(index_length/(1024*1024*1024),2),'G') idx,
-
CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),2),'G') total_size,
-
ROUND(index_length/data_length,2) idxfrac FROM information_schema.TABLES
-
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:
-
+-------------------------------------+--------+--------+--------+------------+---------+
-
| CONCAT(table_schema,'.',table_name) | rows | DATA | idx | total_size | idxfrac |
-
+-------------------------------------+--------+--------+--------+------------+---------+
-
| art87.link_out87 | 37.25M | 14.83G | 14.17G | 29.00G | 0.96 |
-
| art87.article87 | 12.67M | 15.83G | 4.79G | 20.62G | 0.30 |
-
| art116.article116 | 10.49M | 12.52G | 3.65G | 16.18G | 0.29 |
-
| art84.article84 | 10.10M | 10.11G | 3.59G | 13.70G | 0.35 |
-
| art104.link_out104 | 23.66M | 6.63G | 6.55G | 13.18G | 0.99 |
-
| art118.article118 | 7.06M | 10.49G | 2.68G | 13.17G | 0.26 |
-
| art106.article106 | 9.86M | 10.19G | 2.76G | 12.95G | 0.27 |
-
| art85.article85 | 6.20M | 9.82G | 2.51G | 12.33G | 0.26 |
-
| art91.article91 | 8.66M | 9.17G | 2.66G | 11.83G | 0.29 |
-
| art94.article94 | 5.21M | 10.10G | 1.69G | 11.79G | 0.17 |
-
+-------------------------------------+--------+--------+--------+------------+---------+
-
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: table schema, table rows, g data, distribuciones, 66g, bd, disco duro, desc