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