Atualmente, estou usando information_schema.TABLES para calcular o uso total do espaço em disco agrupado pelo nome do banco de dados, mas ele está executando muito lentamente. Em servidores com centenas de bancos de dados, o cálculo pode levar minutos.
Qual é o método mais rápido de calcular o uso de espaço em disco por banco de dados? Devo estar apenas olhando para o sistema de arquivos? Existe um método para acelerar information_schema?
Existem 3 cenários.
du -sh /var/lib/mysql/database
.du -sh
. É aproximado porque ainda existem alguns dados armazenados no arquivo ibdata1, então você ficará um pouco no lado baixo. Essa técnica também funciona com bancos de dados mistos MyISAM/InnoDB (innodb_file_per_table
).innodb_file_per_table set
, precisará examinar INFORMATION_SCHEMA.Em qualquer um dos casos acima, você pode executar a consulta a seguir para obter as informações que está procurando.
Se você tiver um número muito grande de tabelas, pode ser lento, como você já descobriu.
Você pode usar este comando para obter informações em GB:
Adaptou a resposta de Aaron Brown para fornecer o tamanho em GB. Veja a resposta de Aaron Brown para mais detalhes.
OU para incluir espaço livre/recuperável, use:
O espaço pode ser recuperado usando o comando OPTIMIZE TABLE para tabelas InnoDB, MyISAM e ARCHIVE.
Veja também Como obter o tamanho real do banco de dados MySQL? para mais detalhes.
Para que eu veja onde o espaço em disco está sendo usado (independentemente de estar em uma tabela mysql ou não), eu uso meu confiável comando "du". Aqui está um exemplo meu descobrindo de onde todo o espaço está sendo consumido.
Você pode ver que a maior parte do espaço está sendo usada por esta pasta. /mysql
Essa pasta contém tabelas de dados. Para ver quais tabelas estão ocupando todo o espaço, você pode proceder assim usando a opção "human" ou "-h". Eu gosto de fazer o gerenciamento de espaço em disco dessa maneira porque às vezes você não consegue nem logar no mysql porque não sabe a senha ou o usuário.
Você pode ver que todo o espaço está sendo ocupado por algumas tabelas contendo muitos GiG de dados. Espero que isto ajude.
Para obter informações sobre o nome da tabela e o número de registros que ela possui, a consulta abaixo pode ser usada,
Para obter informações sobre bancos de dados nos servidores com seus respectivos tamanhos, pode-se usar a consulta abaixo,
Eu sei que isso é antigo, mas alguém pode achar isso relevante.
No MySQL eu uso:
Como meu banco de dados é InnoDB, isso é apenas uma estimativa.
Eu comparo esta saída com:
Espero que isso ajude você
Eu procuraria o tamanho do arquivo em seu dicionário de dados. É instantâneo e preciso.
Atenção : De acordo com o mecanismo de armazenamento, os índices são armazenados no arquivo principal ou em outro arquivo, não se esqueça de resumi-los, se necessário.
Melhor (depois de fazer
apt-get install ncdu
):para obter todo o tamanho total dos bancos de dados Mysql em seu VPS.
Supondo que seu host MySQL esteja sendo executado no Linux.
Você pode executar a consulta abaixo para encontrar o caminho onde os dados do MySQL são armazenados
Depois de saber onde os dados estão armazenados, você pode verificar o uso do disco com o
du
comando.Por exemplo no Ubuntu
sudo du -h /var/lib/mysql
.Você teria algo assim
Fonte: Verifique o armazenamento usado pelo MySQL no linux