Skip site navigation (1) Skip section navigation (2)

Re: Sobre uso de memoria RAM

From: Leonardo Castillo <leonardo(at)hacer(dot)ula(dot)ve>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Sobre uso de memoria RAM
Date: 2006-12-18 15:52:16
Message-ID: 6.1.1.1.2.20061218113946.056e5d18@deneb.hacer.ula.ve (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Saludos Amigos listeros...

Les mando explain del SQL que hace días les comenté colapsa mi servidor.

Unique  (cost=10270.77..10270.85 rows=8 width=42) (actual 
time=164809.890..164811.213 rows=602 loops=1)
   ->  Sort  (cost=10270.77..10270.79 rows=8 width=42) (actual 
time=164809.885..164810.154 rows=602 loops=1)
         Sort Key: cc.ubicacion, cc.acceso, cc.ext_acceso
         ->  Nested Loop  (cost=1688.57..10270.65 rows=8 width=42) (actual 
time=297.884..164803.436 rows=602 loops=1)
               Join Filter: ("outer".cod_titulo = 
("inner".cod_titulo)::numeric)
               ->  Nested Loop  (cost=1688.57..5380.25 rows=1 width=53) 
(actual time=122.856..692.840 rows=602 loops=1)
                     Join Filter: ("outer".cod_desc = 
("inner".codesc)::numeric)
                     ->  Nested Loop  (cost=1688.57..5266.35 rows=1 
width=63) (actual time=122.782..626.678 rows=1668 loops=1)
                           ->  Nested Loop  (cost=1688.57..5256.14 rows=1 
width=128) (actual time=122.757..596.625 rows=737 loops=1)
                                 ->  Nested Loop  (cost=1688.57..5248.24 
rows=1 width=92) (actual time=122.671..558.570 rows=737 loops=1)
                                       ->  Hash 
Join  (cost=1688.57..5235.17 rows=3 width=50) (actual time=122.592..525.325 
rows=737 loops=1)
                                             Hash Cond: 
(("outer".acceso)::text = ("inner".acceso)::text)
                                             Join Filter: 
("outer".ext_acceso = "inner".ext_acceso)
                                             ->  Nested 
Loop  (cost=12.04..3551.42 rows=1438 width=25) (actual time=42.154..336.688 
rows=72270 loops=1)
                                                   ->  Index Scan using 
tipodesc01 on descript de02  (cost=0.00..4.25 rows=1 width=4) (actual 
time=0.172..0.219 rows=1 loops=1)
                                                         Index Cond: 
(((tipo)::text = 'PAR'::text) AND ((tipo)::text = 'PAR'::text))
                                                         Filter: 
((descriptor)::text = 'SANTA LUCIA'::text)
                                                   ->  Bitmap Heap Scan on 
coddesc ct02  (cost=12.04..3525.60 rows=1438 width=35) (actual 
time=41.956..265.399 rows=72270 loops=1)
                                                         Recheck Cond: 
(ct02.cod_desc = ("outer".codesc)::numeric)
                                                         ->  Bitmap Index 
Scan on cod_desc  (cost=0.00..12.04 rows=1438 width=0) (actual 
time=38.656..38.656 rows=72270 loops=1)
                                                               Index Cond: 
(ct02.cod_desc = ("outer".codesc)::numeric)
                                             ->  Hash 
(cost=1675.04..1675.04 rows=595 width=25) (actual time=80.332..80.332 
rows=5442 loops=1)
                                                   ->  Bitmap Heap Scan on 
document ct01  (cost=6.57..1675.04 rows=595 width=25) (actual 
time=4.254..70.322 rows=5442 loops=1)
                                                         Filter: 
((fecha_iso)::text ~~ '2003%'::text)
                                                         ->  Bitmap Index 
Scan on fecha_iso01  (cost=0.00..6.57 rows=595 width=0) (actual 
time=3.568..3.568 rows=5442 loops=1)
                                                               Index Cond: 
(((fecha_iso)::text >= '2003'::character varying) AND ((fecha_iso)::text < 
'2004'::character varying))
                                       ->  Index Scan using central_pk on 
central cc  (cost=0.00..4.34 rows=1 width=42) (actual time=0.036..0.039 
rows=1 loops=737)
                                             Index Cond: 
((("outer".acceso)::text = (cc.acceso)::text) AND ("outer".ext_acceso = 
cc.ext_acceso))
                                             Filter: (((nivel_reg)::text <> 
's'::text) AND ((tipo_liter)::text = 'U11'::text) AND ((codigo IS NULL) OR 
((codigo)::text = ''::text) OR ((codigo)::text = 'U0240000000*'::text)))
                                 ->  Index Scan using codtit_pk on codtit 
ctt  (cost=0.00..7.89 rows=1 width=36) (actual time=0.044..0.047 rows=1 
loops=737)
                                       Index Cond: ((("outer".acceso)::text 
= (ctt.acceso)::text) AND ("outer".ext_acceso = ctt.ext_acceso))
                                       Filter: ((portada)::text = '1'::text)
                           ->  Index Scan using coddesc_pk on coddesc 
ct03  (cost=0.00..10.15 rows=4 width=35) (actual time=0.026..0.034 rows=2 
loops=737)
                                 Index Cond: ((("outer".acceso)::text = 
(ct03.acceso)::text) AND ("outer".ext_acceso = ct03.ext_acceso))
                     ->  Index Scan using tipodesc01 on descript 
de03  (cost=0.00..112.77 rows=75 width=4) (actual time=0.009..0.029 rows=4 
loops=1668)
                           Index Cond: ((tipo)::text = 'EOPN'::text)
                           Filter: (((descriptor)::text <> 
'VALIDADO'::text) OR ((tipo)::text <> 'EOPN'::text))
               ->  Seq Scan on titulos tit  (cost=0.00..2805.16 rows=139016 
width=4) (actual time=0.003..112.409 rows=138978 loops=602)
Total runtime: 164813.463 ms


select distinct 
CC.acceso,CC.ext_acceso,CC.UBICACION 

from (( ( ((DOCUMENT CT01
  INNER JOIN CENTRAL CC ON
         (CT01.ACCESO = CC.ACCESO AND CT01.EXT_ACCESO = CC.EXT_ACCESO) and
         ( CT01.FECHA_ISO LIKE '2003%' ) ))
  INNER JOIN  (CODDESC CT02 INNER JOIN DESCRIPT DE02 ON
         (CT02.COD_DESC = DE02.CODESC) AND DE02.TIPO = 'PAR' and  ( 
DE02.DESCRIPTOR = 'SANTA LUCIA' AND DE02.TIPO = 'PAR') ) on
         (CC.acceso = CT02.acceso and CC.ext_acceso = CT02.ext_acceso ))
  INNER JOIN  (CODDESC CT03 INNER JOIN DESCRIPT DE03 ON
         (CT03.COD_DESC = DE03.CODESC) AND DE03.TIPO = 'EOPN' and Not ( 
DE03.DESCRIPTOR = 'VALIDADO' AND DE03.TIPO = 'EOPN') ) on
         (CC.acceso = CT03.acceso and CC.ext_acceso = CT03.ext_acceso ))
)
  , codtit ctt
  inner join titulos tit on
         (ctt.portada = '1' and ctt.cod_titulo = tit.cod_titulo)
where CC.nivel_reg <> 's'
  AND (CC.TIPO_LITER  = 'U11')
AND (CC.CODIGO IS NULL OR CC.CODIGO IN ('','U0240000000*'))

  and CC.acceso = ctt.acceso and
  CC.ext_acceso = ctt.ext_acceso ORDER BY  3 ASC;

CENTRAL: 300.000 registros
DESCRIPT: 70.000 registros
CODESC: 450.000 registros
TITULOS: 400.000 registros
CODTIT: 650.000 registros
DOCUMENT: 300.000 registros

Otra cosa que me parece de lo más curiosa.. es que si el año es 1992 la 
consulta trae 250 registros y tarda 10 segundos, si la consulta es 1990 la 
consulta trae 750 registros y tarda 75 seg. LA MISMA CONSULTA....

Para echarle más leña al fuego, estas consultas en Sybase Anywhere 9 tardan 
15 seg. El problema con este manejador es que luego de 8 usuarios colapsa. 
En SQL Server las consultas tardan 2 seg. y no le importan cuantos usuarios 
estén conectados.

Les agradezco cualquier ayuda por favor...

Atte.
Leonardo Castillo 


Responses

pgsql-es-ayuda by date

Next:From: Agustin CasivaDate: 2006-12-18 16:01:36
Subject: Re: Como abrir varios puertos para un servidor de postgresql
Previous:From: RENSO OSWALDO TEJADA AGUIRREDate: 2006-12-18 14:32:20
Subject: Como abrir varios puertos para un servidor de postgresql

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group