Re: Configuracion optima para servidor postgres

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Leonardo Castillo <leonardo(at)hacer(dot)ula(dot)ve>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Configuracion optima para servidor postgres
Date: 2006-12-01 18:06:46
Message-ID: 20061201180646.GG31101@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Leonardo Castillo escribió:
> Tengo Postgres V8.1
>
> Mi metrica es que pueda ejecutar hasta 25 operaciones de un sistema que
> realiza multiples INSERT a diferentes tablas. Estas 25 operaciones por
> lotes deben de tardar menos de 120 segundos. 10 operaciones lo hacen pero
> 20 no y estoy tratando que al menos las 20 terminen.

Ok, primera vez que veo a alguien aca tener un objetivo concreto de
optimizacion :-)

Cuantas tablas son, cuantos indices tiene cada una, que tipo de indices
son? Cuantos insert son, cuantas tuplas estas insertando, que tan
"anchas" son las tuplas que se insertan? Tablas con muchos indices son
obviamente mucho mas lentas para la insercion que tablas con menos
indices. Y mientras mas anchas las tuplas, peor; y mientras mas campos
tengan las tuplas, peor.

Por lo pronto, diria que el shared_buffers es demasiado bajo. Haz
mediciones con valores mayores, digamos 20000, 30000, 40000 y asi.

wal_buffers tambien es un parametro que a veces conviene aumentar. El
valor por omision es 8, prueba aumentandolo a 32.

Tambien deberias ajustar checkpoint_timeout y checkpoint_segments, pero
teniendo muy presente que lo que hace es postergar el momento de hacer
el checkpoint. Si estas viendo checkpoints mas frecuentes que
checkpoint_timeout probablemente te convenga aumentar _segments hasta
que ambos valores sean similares.

Y cuando estes en eso, aprovecha de ajustar los parametros del bgwriter
de manera que las operaciones de escritura esten distribuidas
uniformemente durante el periodo en que _no_ se hace checkpoint; la idea
es que al momento de hacer el checkpoint, haya poco que escribir de
manera que el checkpoint sea lo mas rapido posible, para que no
entorpezca la ejecucion de otras transacciones en ese mismo momento.
(Un checkpoint causa una "tormenta" de I/O debido a que tiene que
escribir y sincronizar (fsync) muchos archivos, lo cual hace que el
resto del sistema sea un poco mas lento. Tu tienes que decidir como
distribuir ese I/O, usando los parametros del bgwriter). Lee el manual
cuidadosamente respecto a este tema: es complicado.

Creo que con eso ya tienes suficiente tarea por ahora ...

--
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 2006-12-01 18:24:42 pgAdmin y backup
Previous Message Leonardo Castillo 2006-12-01 17:52:42 Re: Configuracion optima para servidor postgres