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

Responder a