El 26 de agosto de 2009 23:28, Sebastian Machuca<serr...@gmail.com> escribió:
>
> Este es un ejemplo. Se que son solo 2, porque estoy en entorno de
> desarrollo, en producción, el orden es de al menos unos 30.000 números
> distintos, en una tabla de unos 3.000.000 de registros.
>

Entonces, no podés hacer calculos de este tipo en un ambiente de desarrollo. En
especial si no contas con un set de datos real o al menos aproximado.


> Por eso pense que un indice debería ayudar en mi problema. O sea, cuando lo
> hago sobre las tablas de produccion, los tiempos son de muchos segundo, y el
> tener un indice mejora en por lo menos un 50% el tiempo de consulta. Pero de
> todos modos, no me convence el tiempo de respuesta.
>

Tenés que tocar la configuración del servidor, además de tener otro
tipo de técnicas
para mejorar el rendimiento.

Pasanos los valores del postgresql.conf de work_mem, shared_buffers,
effective_cache_size,
también de la WAL que pr lo visto hace uso intensivo.
Además de los parámetros del kernel del SO

> La base tiene un crecimiento de unos 30.000 registros por hora en sus
> momentos peaks, por lo tanto manter las estadisticas actualizadas,
> sobrecargaria el sistema innecesariamente creo yo.
> Por que no solo es crecimiento, tiene mucha actividad de tipo batch. (cada
> 15 minutos corren scripts de actualizacion de informacion)
>

Tenés RAID? Que tipo?
Como están las estadisticas de I/O desde el sistema operativo?


>> Yo lo haria de una manera más radical...
>> select unnest(most_common_vals::text::int[]) from pg_stats where
>> tablename ~ 'tx8';
>>

respecto a esto, en 8.3 tendrias que utilizar
replace(regexp_split_to_table(most_common_vals::text,',')::text,'({|})','')
no lo probé pero puede ser util.




-- 
              Emanuel Calvo Franco
             DBA at:  www.siu.edu.ar
        www.emanuelcalvofranco.com.ar
--
TIP 1: para suscribirte y desuscribirte, visita 
http://archives.postgresql.org/pgsql-es-ayuda

Responder a