Olá Pessoal,

Preciso de uma dica de vocês. 

Temos uma tabela com uma coluna do tipo Bytea para armazenar uma imagem de
no máximo 100k (do tipo jpg), esta tabela é uma das menores em termos de
tamanho e registros (cerca de 400), porém, notamos que de uma semana para cá
está muito lento o “select *” desta tabela, daí fizemos uma série de testes,
como avaliar se realmente todas as imagens tem o tamanho acima descrito (ou
uma monstruosidade), se poderia ser problema em disco, memória etc. 

Descartamos vários problemas e partimos para “pedir” ajuda ao PostgreSQL
através dos logs, planos, analyze, vaccuum (na ordem) e não vimos nada (pelo
menos não enxergamos). Mas, se eu fizer um “select campo1, campo2...” e
omitir da seleção o campo bytea, tenho a performance desejada.

Abaixo segue o meu cenário para tentar mostrar a vocês nossa situação:

S.O - Linux batux 2.6.28-17-server #58-Ubuntu SMP Tue Dec 1 22:13:36 UTC
2009 x86_64 GNU/Linux

PostgreSQL 8.3.9 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.3.real
(Ubuntu 4.3.3-5ubuntu4) 4.3.3

Tamanho das bases : 
datname Base_Size
template1           4328   kB
template0           4272   kB
postgres            6356   kB
pykota             15008 MB
sap2broker      250797  GB

Tamanho das TS :
spcname Size
pg_default          144 MB
pg_global           354 kB
ts_dado           200360 GB
ts_indice           50427 GB

Tamanho da Tabela (em questão):
schemaname      tablename       registros       tamanho relkind
sap2broker      brkhrempl          339                      112 kB      r


Plan com todos os campos:
QUERY PLAN
Seq Scan on funcionarios  (cost=0.00..17.39 rows=339 width=479) (actual
time=0.007..0.123 rows=339 loops=1)
Total runtime: 0.191 ms


Plan omitindo o campo bytea:
QUERY PLAN
Seq Scan on funcionarios  (cost=0.00..17.39 rows=339 width=447) (actual
time=0.009..0.496 rows=339 loops=1)
Total runtime: 0.561 ms

O tempo de mostragem do resultado do “select *” é de aproximadamente 11s.
O tempo de mostragem do resultado do  “select campo1,campo2...” omitindo o
campo bytea é de aproximadamente 0.10ms

O mesmo teste foi feito no psql, front end, script.

Alguém pode me dar uma dica?


Obrigado,


Rubens José Rodrigues
Analista de Suporte e Processos
Broker Nestlé do Brasil S/A
Departamento de Tecnologia e Informação
(55)27-99698081 - (55)27-33996419
----------------------------------------------------------------------
Batista Coml. Log. e Representações Ltda.
 (55)27-33996400  
Rua José Ramos de Oliveira, 91 - Nossa Senhora da Penha
Vila Velha - ES - 29110-280


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a