Peço desculpas pelo toppost foi devido ao desespero de não conseguir
fazer a migração, mas após colocar o work_mem com 128MB, consegui ter
resultados com aproximadamente 7 a 12seg, troquei o work_men para 32MB
conforme indicado pelo Euler.

Quanto a aplicação em PHP 5 + Apache 2, SIM estou usando conexões
persistentes com ADODB. Alguma dica?

Segue o explain analyze:

 Merge Join  (cost=362542.47..371151.94 rows=5283 width=56) (actual
time=12785.255..13765.140 rows=35156 loops=1)
   Merge Cond: (("outer".codpedido = "inner".codpedido) AND
("outer".max_rec_parcela = "inner".rec_parcela))
   ->  Sort  (cost=128183.18..128393.72 rows=84216 width=8) (actual
time=6343.411..6573.183 rows=417727 loops=1)
         Sort Key: vultimaparcela.codpedido, vultimaparcela.max_rec_parcela
         ->  Subquery Scan vultimaparcela  (cost=119398.69..121293.55
rows=84216 width=8) (actual time=4130.442..4482.184 rows=417727
loops=1)
               ->  HashAggregate  (cost=119398.69..120451.39
rows=84216 width=8) (actual time=4130.439..4335.600 rows=417727
loops=1)
                     ->  Hash Join  (cost=42915.52..114504.45
rows=978849 width=8) (actual time=715.043..3507.827 rows=868669
loops=1)
                           Hash Cond: ("outer".codpedido = "inner".codpedido)
                           ->  Seq Scan on receber
(cost=0.00..31467.72 rows=1432772 width=8) (actual time=0.006..608.925
rows=1432772 loops=1)
                           ->  Hash  (cost=39872.17..39872.17
rows=412140 width=4) (actual time=714.353..714.353 rows=417743
loops=1)
                                 ->  Bitmap Heap Scan on pedido
(cost=2599.86..39872.17 rows=412140 width=4) (actual
time=85.631..419.278 rows=417743 loops=1)
                                       Recheck Cond: ((status = 4) OR
(status = 44) OR (status = 59))
                                       ->  BitmapOr
(cost=2599.86..2599.86 rows=415389 width=0) (actual
time=76.816..76.816 rows=0 loops=1)
                                             ->  Bitmap Index Scan on
idx_pedido_status  (cost=0.00..2567.17 rows=410620 width=0) (actual
time=75.774..75.774 rows=411960 loops=1)
                                                   Index Cond: (status = 4)
                                             ->  Bitmap Index Scan on
idx_pedido_status  (cost=0.00..16.35 rows=2384 width=0) (actual
time=0.667..0.667 rows=3527 loops=1)
                                                   Index Cond: (status = 44)
                                             ->  Bitmap Index Scan on
idx_pedido_status  (cost=0.00..16.35 rows=2384 width=0) (actual
time=0.372..0.372 rows=2256 loops=1)
                                                   Index Cond: (status = 59)
   ->  Sort  (cost=234359.29..237000.96 rows=1056669 width=60) (actual
time=6441.787..6822.392 rows=725632 loops=1)
         Sort Key: receber.codpedido, receber.rec_parcela
         ->  Seq Scan on receber  (cost=33169.14..68218.79
rows=1056669 width=60) (actual time=895.653..1736.971 rows=729363
loops=1)
               Filter: ((valorpago IS NULL) OR (hashed subplan))
               SubPlan
                 ->  Seq Scan on receber  (cost=0.00..31467.72
rows=680567 width=4) (actual time=0.036..562.784 rows=682250 loops=1)
                       Filter: (datapag IS NULL)


2008/8/20 Euler Taveira de Oliveira <[EMAIL PROTECTED]>:
> José Carlos Messias escreveu:
>> Como solicitado achei melhor colocar no site devido a formatação um
>> arquivo txt no link http://www.cpt.com.br/zehk/sql.txt, mas segue no
>> corpo do email também. Veja mais comentarios nas entrelinhas sobre as
>> configurações do servidor abaixo.
>>
> Na verdade seria o EXPLAIN *ANALYZE* e não somente o EXPLAIN. Seria bom
> ver as duas consultas: (i) utilizando visões (ii) utilizando somente
> tabelas.
> Como um colega já alertou, o parâmetro work_mem está muito baixo mas
> talvez não seja o caso de aumentá-lo para todo o agrupamento de banco de
> dados. Experimente o *set work_mem to '32MB'*, que altera esse parâmetro
> somente naquela sessão. Experimente vários valores e veja se o plano de
> execução é alterado.
>
>>
>> 2008/8/20 André Volpato <[EMAIL PROTECTED]>:
>>> José Carlos Messias escreveu:
>
>> Como é um servidor estável em produção estou usando a versão fornecida
>> via APT-GET do debian "postgresql-8.1 8.1.11-0etch1",
>>
>> Fiz algumas tentativas de migrar para 8.3.3 mas barrei na codificação.
>>
> Não entendi. Qual o problema com a codificação?
>
>>>> max_connections = 700
>>>>
>>> Precisa mesmo de tantas conexões?
>>
>> Fui aumentando para evitar erros de número máximo de conexões
>> atingidas, utilizamos apache 2+php 5 em nosso sistema.
>>
> Sugiro rever porque a aplicação está consumindo tantas conexões. Você
> está utilizando conexões persistentes?
>
>>>> shared_buffers = 80000
>>>> work_mem = 8192
>>>>
>>> Parece pouco. Este fator está ligado diretamente com as ordenações.
>>> Tente aumentar para uns 128MB e vê no qe dá...
>>
> *Não* faça isso. Esse parâmetro é por sessão. Assim, com _apenas_ 32
> conexões você ocupará os 4GB! Veja dica acima.
>
> PS> pessoal, evitem *top-postings* [1]. Fica difícil descobrir quem
> escreveu o que! Vide regras da lista [2] e um texto interessante sobre o
> assunto [3].
>
>
> [1] http://en.wikipedia.org/wiki/Posting_style
> [2] http://www.postgresql.org.br/RegrasLista
> [3] http://www.caliburn.nl/topposting.html
>
>
> --
>  Euler Taveira de Oliveira
>  http://www.timbira.com/
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a