Re: Lentitud de postgres

From: "Luis Guevara" <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Lentitud de postgres
Date: 2007-06-20 20:54:13
Message-ID: fa2b6e3a0706201354o35c3a5deq6e554b2cc4694ea@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

hOLA

On 6/20/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
>
> Luis Guevara escribió:
> > Hola:
> >
> > Donde puedo empezar a afinar postgres si tengo el siguiente problema ?
> >
> > Todas mis consultas funcionan de manera rápida cuando es una sola pc la
> que
> > trabaja en el sistema. Pero cuando empieza a crecer el número de
> usuarios
> > conectados efectuando operaciones, entonces se vuelven lentos los
> sistemas.
> > Es como si el postgres o el linux no está administrando bien las
> > conexiones.
>
> Probablemente lo que sucede es que las consultas no estan usando los
> indices cuando debieran. Podrias empezar mandando un EXPLAIN ANALYZE de
> alguna de ellas.
>
>
Pero ¿ porqué se presenta la lentitud solo cuando hay varios usuarios
conectados ?. Por ejm. tengo una consulta que la uso para un proceso de
planillas, que me devuelve 170,000 registros en 6 segundos cuando la hago
desde una sola pc conectada al sistema, lo que me parece bastante bien.
Pero si la misma consulta la vuelvo a generar cuando tengo varios usuarios
trabajando en el sistem, entonces se demora 2 minutos.

Les paso aquí el EXPLAIN

QUERY PLAN
Sort (cost=416684.31..417074.43 rows=156049 width=372) (actual time=
6934.763..7007.852 rows=164953 loops=1)
Sort Key: a.plem_id, e.cogr_tipo, d.conc_ordenproceso, d.conc_prioridad,
l.conv_fsuscripcion, d.conc_id
-> Hash Left Join (cost=71415.29..403223.80 rows=156049 width=372)
(actual time=1430.460..5480.398 rows=164953 loops=1)
Hash Cond: (f.depe_id = n.depe_id)
-> Hash Left Join (cost=71248.89..388232.75 rows=156049 width=348)
(actual time=1423.589..4454.731 rows=164953 loops=1)
Hash Cond: (a.conv_id = l.conv_id)
-> Hash Left Join (cost=71243.33..387428.73 rows=156049
width=348) (actual time=1423.251..4195.454 rows=164953 loops=1)
Hash Cond: (f.comp_id = m.comp_id)
-> Hash Left Join
(cost=71218.19..385175.22rows=156049 width=341) (actual time=
1422.025..3898.475 rows=164953 loops=1)
Hash Cond: (COALESCE(f.cate_idplanilla, f.cate_id)
= i.cate_id)
-> Hash Left Join
(cost=71207.25..383174.65rows=156049 width=335) (actual time=
1421.480..3586.067 rows=164953 loops=1)
Hash Cond: (b.plan_id = c.plan_id)
-> Hash Left Join (cost=
70439.67..380066.33 rows=156049 width=321) (actual
time=1408.059..3264.241rows=164953 loops=1)
Hash Cond: (a.conc_id = d.conc_id)
-> Hash Left Join (cost=
70411.18..377697.11 rows=156049 width=273) (actual
time=1405.788..2893.109rows=164953 loops=1)
Hash Cond: (a.pers_id =
h.pers_id)
-> Hash Left Join (cost=
66511.86..371066.88 rows=156049 width=260) (actual
time=1334.779..2569.679rows=164953 loops=1)
Hash Cond: (b.pers_id =
f.pers_id)
-> Hash Left Join (cost=
62403.22..362666.89 rows=156049 width=114) (actual
time=1163.539..1964.410rows=164953 loops=1)
Hash Cond: (
a.plem_id = b.plem_id)
-> Bitmap Heap Scan
on planilla_empleado_movimiento a (cost=2905.81..299268.26 rows=156049
width=102) (actual time=30.113..499.860 rows=164953 loops=1)
Recheck Cond:
(plan_id = 388)
-> Bitmap
Index Scan on planilla_empleado_movimiento_idx2
(cost=0.00..2866.79rows=156049 width=0) (actual time=
26.895..26.895 rows=164953 loops=1)
Index
Cond: (plan_id = 388)
-> Hash (cost=
59278.93..59278.93 rows=87393 width=16) (actual
time=1133.245..1133.245rows=89027 loops=1)
-> Seq Scan
on planilla_empleado b (cost=0.00..59278.93 rows=87393 width=16) (actual
time=0.035..1066.470 rows=89027 loops=1)
-> Hash (cost=
4044.57..4044.57 rows=25626 width=150) (actual
time=171.180..171.180rows=25628 loops=1)
-> Hash Left Join
(cost=1.06..4044.57 rows=25626 width=150) (actual
time=0.094..129.454rows=25628 loops=1)
Hash Cond: (
f.afp_id = g.afp_id)
-> Seq Scan
on persona f (cost=0.00..3835.26 rows=25626 width=118) (actual time=
0.038..95.555 rows=25628 loops=1)
-> Hash
(cost=1.05..1.05 rows=5 width=36) (actual time=0.039..0.039 rows=5 loops=1)
-> Seq
Scan on afp g (cost=0.00..1.05 rows=5 width=36) (actual
time=0.025..0.029rows=5 loops=1)
-> Hash
(cost=3835.26..3835.26rows=25626 width=21) (actual time=
70.963..70.963 rows=25628 loops=1)
-> Seq Scan on persona h
(cost=0.00..3835.26 rows=25626 width=21) (actual
time=0.005..50.909rows=25628 loops=1)
-> Hash (cost=27.73..27.73 rows=304
width=48) (actual time=2.231..2.231 rows=304 loops=1)
-> Hash Left Join (cost=
1.12..27.73 rows=304 width=48) (actual time=0.115..1.596 rows=304 loops=1)
Hash Cond: (d.cogr_id =
e.cogr_id)
-> Seq Scan on concepto
d (cost=0.00..22.04 rows=304 width=46) (actual time=0.043..0.889 rows=304
loops=1)
-> Hash
(cost=1.10..1.10rows=10 width=6) (actual time=
0.051..0.051 rows=10 loops=1)
-> Seq Scan on
concepto_grupo e (cost=0.00..1.10 rows=10 width=6) (actual time=
0.026..0.035 rows=10 loops=1)
-> Hash (cost=766.47..766.47 rows=447
width=18) (actual time=13.390..13.390 rows=451 loops=1)
-> Seq Scan on planilla c (cost=
0.00..766.47 rows=447 width=18) (actual time=0.038..12.723 rows=451 loops=1)
-> Hash (cost=10.55..10.55 rows=155 width=10)
(actual time=0.498..0.498 rows=155 loops=1)
-> Seq Scan on categoria i (cost=
0.00..10.55 rows=155 width=10) (actual time=0.045..0.331 rows=155 loops=1)
-> Hash (cost=24.11..24.11 rows=411 width=11) (actual
time=1.194..1.194 rows=411 loops=1)
-> Seq Scan on componente m
(cost=0.00..24.11rows=411 width=11) (actual time=
0.042..0.747 rows=411 loops=1)
-> Hash (cost=5.25..5.25 rows=125 width=8) (actual time=
0.312..0.312 rows=125 loops=1)
-> Seq Scan on convenio l (cost=0.00..5.25 rows=125
width=8) (actual time=0.030..0.191 rows=125 loops=1)
-> Hash (cost=161.92..161.92 rows=1792 width=28) (actual time=
6.819..6.819 rows=1717 loops=1)
-> Seq Scan on dependencia n (cost=0.00..161.92 rows=1792
width=28) (actual time=0.039..4.734 rows=1717 loops=1)
Total runtime: 7251.215 ms

Gracias

--
atte.
Luis Guevara

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-06-20 21:00:22 Re: Lentitud de postgres
Previous Message Jared Lopez 2007-06-20 20:32:43 Re: Sitio de enseñanza online PostgreSql