On 07-04-2014 18:32, Danilo Silva wrote:
> É possível saber o tamanho de um campo e de uma linha de uma tabela? Tenho
> uma tabela que tem um campo bytea e preciso saber quanto este campo está
> ocupando de espaço em disco.
> 
Para calcular o quanto uma coluna ocupa de espaço basta fazer:

foo=# select pg_size_pretty(sum(pg_column_size(coluna))) as tamanho from
bar ;
 tamanho
---------
 67 MB
(1 registro)

Quanto ao tamanho de uma tupla o cálculo é um pouco mais complicado
(basicamente é tamanho do cabeçalho + tamanho do ponteiro + soma dos
tamanhos de cada campo) e depende da versão do PostgreSQL. Algo
aproximado seria (id é a chave primária da tabela bar):

foo=# select id,pg_size_pretty(sum(pg_column_size(bar.*))) as tamanho
from bar group by id ;
   id   | pg_size_pretty
--------+----------------
 202094 | 68 bytes
 288788 | 988 bytes
   2026 | 2120 bytes
  81339 | 656 bytes
 277925 | 668 bytes
 322256 | 828 bytes
  22262 | 1320 bytes
 319416 | 1348 bytes
 546627 | 68 bytes
.
.
.


-- 
   Euler Taveira                   Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a