On 07-04-2014 22:19, Euler Taveira wrote:
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
.
.
.


Complementando o que o Euler já disse vc pode dar uma lida nos links abaixo pra poder entender um pouco o porque dessa dificuldade:

http://stackoverflow.com/questions/13570613/making-sense-of-postgres-row-sizes
http://stackoverflow.com/questions/13524222/table-size-with-page-layout
http://www.postgresql.org/docs/current/interactive/storage-page-layout.html
http://www.postgresql.org/docs/current/interactive/pgstattuple.html

Att,

--
   Fabrízio de Royes Mello         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