Como Verificar o Espaço Alocado em um Banco de Dados MySQL

Publicado:
 at 00:00
  • mysql
  • sql
  • db
  • phpmyadmin
  • Neste post vou mostrar algumas consultas que utilizo para saber o espaço alocado no banco de dados MySQL. Geralmente utilizo consultas no administrador de banco de dados PHPMyadmin Como se trata de consultas simples, acredito que você não deve ter problemas se utiliza SSH ou um software em sua máquina local.

    Consultas simples

    No início utilizamos o SELECT table_schema para selecionar o banco em nossa base de dados. O comando SUM soma os valores de armazenamento data_length + index_length.

    O próximo SUM pega a soma do data_free para exibir o que ainda temos disponível de espaço no DB. Selecionamos estes dados das tabelas com FROM information_schema.TABLES e agrupamos pelo DB com GROUP BY table_schema

    data_length - armazenar os dados reais.

    index_length - armazenar o índice da tabela.

    SELECT table_schema "Nome do banco de dados",
    sum( data_length + index_length ) / (1024 * 1024) "Tamanho em MB",
    sum( data_free )/ (1024 * 1024) "Espaço livre em MB"
    FROM information_schema.TABLES
    GROUP BY table_schema;
    

    Otimizar exibição

    SELECT table_schema "Nome do banco de dados",
    SUM( ROUND( (data_length + index_length) / ( 1024 *1024 ) , 2 ) )  "Tamanho em MB",
    SUM( ROUND( (data_free) / ( 1024 *1024 ) , 2 ) )  "Espaço livre em MB"
    FROM information_schema.TABLES
    GROUP BY table_schema;
    

    Talvez você queira visualizar de forma específica o tamanho das tabelas dentro do BD. Neste exemplo o valor eduardolira recebido pelo table_schema é o nome do meu banco de dados. O legal é que agora podemos visualizar nas colunas o que somamos anteriormente, utilizando data_length + index_length.

    SELECT TABLE_NAME, table_rows, data_length, index_length,
    ROUND( ((data_length + index_length) /1024 * 1024 ) , 2) "Tamanho em MB"
    FROM information_schema.TABLES
    WHERE table_schema =  "eduardolira";
    

    Otimizando mais:

    SELECT concat( table_schema, '.', table_name ) Tabela,
    concat( round( data_length / ( 1024 * 1024 ) , 2 ) , 'MB' ) data_length,
    concat( round( index_length / ( 1024 * 1024 ) , 2 ) , 'MB' ) index_length,
    concat( round( round( data_length + index_length ) / ( 1024 * 1024 ) , 2 ) , 'MB' ) Total
    FROM information_schema.TABLES
    ORDER BY data_length DESC;
    

    Através dos links baixo você pode encontrar outras consultas úteis.

    Referências -> https://dev.mysql.com/doc/refman/5.1/en/tables-table.html https://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

    Vlw! :v:

    Post anterior Post anterior Próximo post Próximo post