O tamanho do banco de dados MySQL pode ser calculado com
SELECT table_schema AS db_name, SUM(data_length + index_length) AS size
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema != 'INFORMATION_SCHEMA'
GROUP BY db_name
Mas você também pode calcular o tamanho do banco de dados observando o uso do disco do diretório de dados. Esses dois números devem se desviar? Existe alguma razão para usar um desses métodos do outro? Por extensão, como é INFORMATION_SCHEMA.TABLES
's data_length
e index_length
calculado?
Bem, parece que há duas maneiras de desviar no desempenho,
Estatísticas quando você consulta com
innodb_stats_on_metadata
(o padrão) você força as estatísticas a serem atualizadas (se não estiverem em cache). Você pode desativar isso, mas isso exige que você faça umaGLOBAL
alteração. Dos documentos :Cache senão parece que o
INFORMATION_SCHEMA
está lendo de um cache emTable_statistics::get_stat
. Isso parece estar documentado eminformation_schema_stats_expiry
. Mas também parece que você pode atualizar o cache com aANALYZE
tabela (que os documentos mencionam) e o conjunto de testes . Portanto, o cache pode flutuar por muitos segundos.Não vejo mais nada documentado ou no código que me faça acreditar que houve uma diferença.