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