Tamanho das tabelas no PostgreSQL

Em muitos casos é preciso saber o espaço em que as tabelas do banco de dados estão utilizando em disco, para fins de monitoramento e decisão de estruturação de banco. Para tal tarefa no PostgreSQL o comando abaixo resolve o problema.

SELECT esquema, tabela,
       pg_size_pretty(pg_relation_size(esq_tab)) AS tamanho,
       pg_size_pretty(pg_total_relation_size(esq_tab)) AS tamanho_total
  FROM (SELECT tablename AS tabela,
               schemaname AS esquema,
               schemaname||'.'||tablename AS esq_tab
          FROM pg_catalog.pg_tables
         WHERE schemaname NOT
            IN ('pg_catalog', 'information_schema', 'pg_toast') ) AS x
 ORDER BY pg_total_relation_size(esq_tab) DESC;

a coluna tamanho mostra o tamanho que os registros (tuplas) da tabela está ocupando no disco, e a coluna tamanho_total inclui também os TOASTs e os índices associados à tabela.

Com essa consulta, é possível inclusive montar scripts (em shellscript, perl, python, groovy, etc..) de monitoramento do banco, por exemplo: caso a tabela tal, ou a soma de todas as tabelas chegar a X Mb, envie um email de alerta. Outra utilização seria de geração de indicadores para análise de tendência da expansão do banco.

Anúncios

6 Respostas to “Tamanho das tabelas no PostgreSQL”

  1. José Rogério Says:

    Opa, valeu pela dica, funcionou perfeitamente.

  2. Eduardo Ramos Says:

    Realmente muito útil. Hoje salvou minha vida!

  3. Rodrigo Almeida Says:

    Show de bola! Tenho uma base aqui de 7GB e tava doido pra dar uma geral nela!

  4. renato473 Says:

    Totalmente funcional Show de bola aprovado : )

  5. Márcio Miranda Says:

    Muito bom a dica. Excelente post.

  6. Joel Says:

    Bom Dia. Obrigado pelo post, ajudou muito.
    Tenho algumas tabelas onde a diferença entre as colunas é grotesca, por exemplo, tamanho = “8912 kB” e tamanho_total =”4400 MB”. Há como diminuir o tamanho_total? Pois não pode ter essa diferença em espaço alocado para TOASTs e os índices.


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: