rodei o select que o Euler citou:select 
relname,pg_relation_size(oid),pg_table_size(oid)   from pg_class where relname 
= 'comimgcl';
o retorno foi:relname   │ pg_relation_size │ pg_table_size
────────┼──────────────┼───────────────comimgcl │ 8192                    │ 
97509376
(1 registro)
 

 

Alessandro de Lima Folk

Email/Msn: [email protected]

Skype: alessandrolimafolk

Analista de Sistemas

> Date: Fri, 8 Nov 2013 09:57:33 -0200
> From: [email protected]
> To: [email protected]
> Subject: Re: [pgbr-geral] FW: Consulta lenta em tabela com campo bytea
> 
> On 07-11-2013 13:24, Alessandro . wrote:
> > Tenho uma tabela que tem um campo bytea onde armazeno um arquivo pdf!ao 
> > realizar uma consulta nesta tabela ex:"SELECT * FROM TABELA WHERE CHAVE = 
> > 123"o resultado é obtido em (16 segundos) em média.se retiro o campo que é 
> > do tipo BYTEA da consulta o resultado é apresentado em: (125 ms)
> > Servidor:PostgreSQL 9.1.1 on x86_64-unknown-linux-gnu, compiled by gcc 
> > (Debian 4.4.5-8) 4.4.5, 64-bit
> > Alguma idéia de como resolver isso?
> > 
> 9.1.1 está desatualizado. Considere atualizar para 9.1.10 (última versão
> da série 9.1).
> 
> Resposta rápida: o tempo a mais é para transferir o campo bytea.
> 
> Como você mediu esse tempo? Para identificar problemas no *servidor*
> você deve medir o tempo no *servidor*. Utilize o parâmetro log_statement
> para saber o tempo gasto no servidor.
> 
> > Alguns detalhes sobre a tabela:
> > #CódigoSELECT relname, pg_size_pretty(relpages*8192) as "tamanho"  from 
> > pg_class where relname = 'comimgcl'Resultado:
> > comimgcl = 8192 bytes
> > #CódigoSELECT n.nspname AS schemaname,        c.relname AS tablename,       
> >  C.reltuples AS Registros,        pg_size_pretty(pg_relation_size(n.nspname 
> > ||'.'||c.relname)) as TamanhoFROM pg_class cLEFT JOIN pg_namespace n ON 
> > n.oid = c.relnamespaceLEFT JOIN pg_tablespace t ON t.oid = 
> > c.reltablespaceWHERE c.relkind = 'r'AND n.nspname = 'public'AND c.relname = 
> > 'comimgcl'Resultado:
> > schemaname  tablename       registros       tamanho
> > public           comimgcl  42         8192 bytes 
> > 
> Sua consulta está incorreta. pg_relation_size *não* lhe fornece o
> tamanho gasto real. Digo, ele não considera alguns detalhes de
> implementação (TOAST, fsm, vm) como parte do tamanho da tabela [1]. No
> seu caso, o campo bytea deve estar utilizando a implementação TOAST.
> 
> euler=# \d xpto
>                              Tabela "public.xpto"
>  Coluna │  Tipo   │                       Modificadores
> 
> ────────┼─────────┼───────────────────────────────────────────────────────────
>  id     │ integer │ não nulo valor padrão de
> nextval('xpto_id_seq'::regclass)
>  bincol │ bytea   │
> Índices:
>     "xpto_pkey" PRIMARY KEY, btree (id)
> 
> euler=# select relname,pg_relation_size(oid),pg_table_size(oid) from
> pg_class where relname = 'xpto';
>  relname │ pg_relation_size │ pg_table_size
> ─────────┼──────────────────┼───────────────
>  xpto    │             8192 │         32768
> (1 registro)
> 
> 
> -- 
>    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
                                          
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a