quinta-feira, 30 de maio de 2013

Tamanho por informações Mesa com MySQL

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


Sabendo o tamanho de seus dados é naturalmente útil. As ferramentas se tornaram mais fáceis ao longo dos anos e diferentes versões do MySQL, mas é algo que você deve verificar, independentemente da sua versão do MySQL.

Se você estiver executando uma versão antiga do MySQL (antes information_schema), então você ainda pode reunir esses dados usando "status da tabela Show e adicione o data_length ao index_length". O information_schema torna isso muito mais fácil, mas você é livre para usá-los sempre que quiser.

Tire proveito do comando pager para reunir apenas as informações que são depois.
[world]> pager egrep -h "Data_length|Index_length"
PAGER set to 'egrep -h "Data_length|Index_length"'
Use o comando SHOW TABLE STATUS para reunir as informações relacionadas:
[world]> show table status like 'City'\G
Data_length: 409600
Index_length: 131072
1 row in set (0.00 sec)
Redefinir o pager:
[world]> pager
Default pager wasn't set, using stdout. 
Tamanho da tabela = data_length + Index_length
[world]> select 409600 + 131072 as Table_Size;
+------------+
| Table_Size |
+------------+
540672 |
+------------+ 

A mesma informação está disponível através do 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) 


O ponto, prestar atenção e saber seus dados.