Eu posso executar esta consulta para obter os tamanhos de todas as tabelas em um banco de dados MySQL:
show table status from myDatabaseName;
Eu gostaria de alguma ajuda para entender os resultados. Estou à procura de mesas com os maiores tamanhos.
Qual coluna devo olhar?
Respostas:
Você pode usar esta consulta para mostrar o tamanho de uma tabela (embora seja necessário substituir primeiro as variáveis):
ou esta consulta para listar o tamanho de cada tabela em cada banco de dados, maior primeiro:
fonte
AND table_name IN ('table_1', 'table_2', 'table_3');
VARCHAR
eBLOB
escreveria?Você pode obter o nome do esquema na coluna " information_schema " -> tabela SCHEMATA -> " SCHEMA_NAME "
Adicional Você pode obter o tamanho dos bancos de dados mysql da seguinte maneira.
Resultado
Você pode obter detalhes adicionais aqui.
fonte
Isso classifica os tamanhos (tamanho do banco de dados em MB).
fonte
Se você deseja que uma consulta use o banco de dados selecionado no momento. basta copiar e colar esta consulta. (Nenhuma modificação necessária)
fonte
SIZE_MB
FROM information_schema.TABLES WHERE table_schema = DATABASE () ORDER BY (data_length + index_length) ASC;Existe uma maneira fácil de obter muitas informações usando o Workbench:
Clique com o botão direito do mouse no nome do esquema e clique em "Inspetor de esquema".
Na janela resultante, você tem várias guias. A primeira guia "Informações" mostra uma estimativa aproximada do tamanho do banco de dados em MB.
A segunda guia, "Tabelas", mostra o comprimento dos dados e outros detalhes para cada tabela.
fonte
Tamanho de todas as tabelas:
Suponha que seu banco de dados ou
TABLE_SCHEMA
nome seja "news_alert". Em seguida, essa consulta mostrará o tamanho de todas as tabelas no banco de dados.Resultado:
Para a tabela específica:
Suponha que você
TABLE_NAME
é "notícia" . A consulta SQL seráResultado:
fonte
Experimente o seguinte comando shell (substitua
DB_NAME
pelo nome do banco de dados):Para solução Drupal / drush, verifique o seguinte exemplo de script que exibirá as maiores tabelas em uso:
fonte
Aqui está outra maneira de resolver isso usando a linha de comando do bash.
for i in
mysql -NB -e 'show databases'
; do echo $i; mysql -e "SELECT table_name AS 'Tables', round(((data_length+index_length)/1024/1024),2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema =\"$i\" ORDER BY (data_length + index_length) DESC" ; donefonte
Se você estiver usando o phpmyadmin, basta ir para a estrutura da tabela
por exemplo
fonte
Adaptado da resposta do ChapMic para atender às minhas necessidades particulares.
Especifique apenas o nome do banco de dados e, em seguida, classifique todas as tabelas em ordem decrescente - da tabela MAIOR para a MAIS PEQUENA dentro do banco de dados selecionado. Precisa apenas de 1 variável para ser substituída = o nome do seu banco de dados.
fonte
Se você tiver
ssh
acesso, tente tambémdu -hc /var/lib/mysql
(ou diferentedatadir
, conforme definido no seumy.cnf
).fonte
Outra maneira de mostrar o número de linhas e o espaço ocupado e ordenado por ele.
A única string que você deve substituir nesta consulta é "yourDatabaseName".
fonte
Acho que as respostas existentes não fornecem o tamanho das tabelas no disco, o que é mais útil. Essa consulta fornece uma estimativa de disco mais precisa em comparação com o tamanho da tabela com base no comprimento e no índice de dados. Eu tive que usar isso para uma instância do AWS RDS em que você não pode examinar fisicamente o disco e verificar o tamanho do arquivo.
fonte
Calcule o tamanho total do banco de dados no final:
fonte
todos os 2 acima são testados no mysql
fonte
Isso deve ser testado no mysql, não no postgresql:
fonte