El 29/12/2010 17:50, Alvaro Herrera escribió:
Excerpts from Mario Sileone's message of mié dic 29 14:31:16 -0300 2010:
Estimados, buenas tardes.
Estoy tratando de optimizar el WAL en una base de datos. De acuerdo
a la información que recopilé, seteando el checkpoint_segment en 1 me
realizaba una escritura cada aprox. 20 segundos (16 MB).
Noté que en estos casos caía por unos instantes la performance del
servidor, e inclusive veia algunos inserts y updates waiting, y el log
me avisaba que deberia incrementarlo.
Leyendo en la web sobre la optimización del WAL encontré que podria
ser mejor dejar shared_buffers mas bajo de lo óptimo para mi sistema, y
elevar el numero de checkpoint_segments como asi tambien el
checkpoint_timeout.
¿Qué versión del servidor? checkpoint_segments=1 es un valor
ridículamente bajo. Para tener rendimiento decente considera subirlo
como mínimo a unos 15 o 30. Luego, estudia cómo mejorar el rendimiento
durante un checkpoint usando el parámetro checkpoint_completion_target,
y el comportamiento del bgwriter con bgwriter_lru_maxpages y
bgwriter_lru_multiplier.
Si tu versión del servidor no tiene esos parámetros, actualiza.
shared_buffers=2GB parece un valor bastante razonable.
max_connections=200 puede que sea excesivo. Considera usar un pooler
encolante (pgbouncer).
Finalmente: consigue el libro de San Gregory Smith, haz que un cura te
lo sacramente como Biblia (o Torah o lo que indique tu religión), y te
aprendes los versículos que hablan de checkpoints.
Alvaro, Gracias por tu respuesta. La versión del servidor es 8.2.7, he
revisado información de San Gregory Smith en la web y alli es donde me
indicaba estos detalles de shared_buffers chicos para grandes cargas.
Voy a tratar de comprar el libro que me indicas, por suerte tengo un tio
Sacerdote :-).
Gracias por tu ayuda y feliz año a toda la comunidad!
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda