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
