Tamanho das Tabelas no PostgreSQL

Ao analisar um problema do cliente na qual seu banco de dados estava utilizando muito o disco, encontrei uma solução para verificar e identificar o tamanho das tabelas no PostgreSQL aqui na web que compartilho com vocês.

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 de monitoramento do banco, por exemplo: caso a tabela tal, ou a soma de todas as tabelas chegar a “N” Mb, envie um email de alerta, assim como para geração de indicadores para análise de tendência da expansão do banco.