Re: Performance y Postgresql.conf

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.

In response to

Responses

Browse pgsql-es-ayuda by date

  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