viernes, 31 de mayo de 2013

Tamaño por información de la tabla de MySQL

Original post: http://anothermysqldba.blogspot.com/2013/05/size-per-table-information-with-mysql.html


Conocer el tamaño de los datos es, por supuesto ayuda. Las herramientas se han convertido en más fácil con los años y las diferentes versiones de MySQL, pero es algo que usted debe comprobar independientemente de la versión de MySQL.

Si está ejecutando una versión antigua de MySQL (antes information_schema), entonces usted todavía puede recopilar estos datos mediante el uso de "Mostrar estado de tabla y agregar la Data_length al Index_length." El information_schema hace esto mucho más fácil, sino que son libres de utilizarlas siempre que lo desee.

Aproveche el comando pager para recoger sólo la información que está buscando.
[world]> pager egrep -h "Data_length|Index_length"
PAGER set to 'egrep -h "Data_length|Index_length"'
Utilice el comando SHOW TABLE STATUS para recopilar la información relacionada con:
[world]> show table status like 'City'\G
Data_length: 409600
Index_length: 131072
1 row in set (0.00 sec)
Reinicie el pager:
[world]> pager
Default pager wasn't set, using stdout. 
Tamaño de la tabla = Data_length + Index_length
[world]> select 409600 + 131072 as Table_Size;
+------------+
| Table_Size |
+------------+
540672 |
+------------+ 

La misma información está disponible a través de la information_schema:

SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE,SUM(DATA_LENGTH+INDEX_LENGTH) AS size,SUM(INDEX_LENGTH) AS index_size
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA IN ('world') AND TABLE_NAME IN ('City') AND ENGINE IS NOT NULL
GROUP BY TABLE_SCHEMA, TABLE_NAME

TABLE_SCHEMA: world
TABLE_NAME: City
ENGINE: InnoDB
size: 540672
index_size: 131072
1 row in set (0.00 sec) 


El punto, prestar atención y saber sus datos.