From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Yasset Perez Riverol <yasset(dot)perez(at)biocomp(dot)cigb(dot)edu(dot)cu> |
Cc: | Silvio Quadri <silvioq(at)gmail(dot)com>, postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Performance y Postgresql.conf |
Date: | 2008-02-12 14:43:26 |
Message-ID: | 20080212144326.GC14683@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Yasset Perez Riverol escribió:
> On Tuesday 12 February 2008 9:28:49 am Alvaro Herrera wrote:
> > Yasset Perez Riverol escribió:
> > > Silvio lo que me dices de tener una tabla con la estadistica ya lo
> > > pense pero sobre 5 millones de [registros] creo que count(*) no debe
> > > dar un resultado como este:
> > >
> > > QUERY PLAN
> > > -------------------------------------------------------------------------
> > >------------------------------------------------------ Aggregate
> > > (cost=200569.48..200569.49 rows=1 width=71) (actual
> > > time=28574.282..28574.284 rows=1 loops=1)
> > > -> Seq Scan on tabla1 (cost=0.00..187024.78 rows=5417878 width=71)
> > > (actual time=16.214..19513.222 rows=5417878 loops=1)
> > > Total runtime: 28574.382 ms
> > > (3 rows)
> >
> > El problema de count(*) se ha discutido muchas veces. La respuesta es
> > que la unica manera de hacer count(*) es recorrer la tabla completa. Si
> > te sirve una estimacion en lugar de una cantidad exacta-exacta, se
> > pueden buscar maneras mas rapidas de encontrar el total.
> >
> > El fichero de configuracion es bastante irrelevante.
> >
> > En resumen, lo que muestras arriba es correcto y esperable.
>
> Que el fichero sea irrelevante significa ?
Significa que para el caso de
SELECT count(*) from tabla_grande
no tiene mayor injerencia el fichero. En otros casos sí la tiene.
> Lo pase para para que ver si algunos de ustedes con la experiencia que tienen
> podian detectar que la combinacion de parametros estuviesen dando algun error
> de performance ...
Claro. En este caso no es ese el problema.
> pero si dices que las consultas como estas se comportan de
> esta forma ... te entiendo...
Probé acá con una tabla de ejemplo y tengo un resultado muy similar:
alvherre=# explain analyze select count(*) from yasset;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=139424.75..139424.76 rows=1 width=0) (actual time=24768.338..24768.340 rows=1 loops=1)
-> Seq Scan on yasset (cost=0.00..126924.60 rows=5000060 width=0) (actual time=12.369..15572.997 rows=5000000 loops=1)
Total runtime: 24768.419 ms
(3 rows)
(RAID1 de 2 discos SATA, creo que de 7200RPM)
Como te decía, si una cantidad aproximada es suficiente para tus
propósitos, se puede obtener muy rápido.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-02-12 14:43:51 | Re: Performance y Postgresql.conf |
Previous Message | Jessie Cordoba | 2008-02-12 14:43:04 | REGISTROS DUPLICADOS EN LA BASE DE DATOS |