RE: configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum

From: Lazáro Rubén García Martínez <lgarciam(at)vnz(dot)uci(dot)cu>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Jose Mercedes Venegas Acevedo <jvenegasperu(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum
Date: 2012-07-08 19:53:42
Message-ID: 294D3D02D5E18D42827B2ECFEADEB688472A44BB74@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro muchas gracias por tus aclaraciones, simpre bienvenidas, sobre los checkpoints me quedan algunas dudas, y si puedes ayudarme a aclarar otras lagunas sería mucho mejor:

1. Cuando wal_buffers se llena también ocurre un checkpoint, o solamente ocurre durante checkpoint_segmentes o checkpoint_timeout?

2. Cuando se realiza una operación que afecta los datafiles, este cambio es almacenado en wal_buffers y en shared_buffers, pero solamente es sincronizado a disco cuando ocurre un checkpoint o durante wal_writer_delay que llevaría las páginas sucias del wal_buffers a los ficheros de wal y bgwriter_delay que llevaría las páginas sucias de shared_buffers a los datafiles de la db. Si esto es así, entonces durante un checkpoint, sería mucha la información que debería alterar los datafiles debido a la continua ejecución del proceso background writer?

3. Tanto el proceso wal writer como background writer, después de ejecutados limpian las páginas sucias de wal_buffers y de shared_buffers que fueron sincronizadas?

4. Podría darse el caso de que después de ocurrir un checkpoint, tras una caida del servidor, cuando este inicie y trate de entrar en modo de recuperación, podria ser que la información que esté almacenada en los ficheros wal ya esté en la db producto de que el proceso de background writer fue ejecutado?. En caso de ser posible, que hace el gestor al respecto.

Saludos y muchas gracias por tu ayuda.

________________________________________
From: Alvaro Herrera [alvherre(at)alvh(dot)no-ip(dot)org]
Sent: Saturday, July 07, 2012 3:13 PM
To: Lazáro Rubén García Martínez
Cc: Jose Mercedes Venegas Acevedo; Ayuda
Subject: RE: [pgsql-es-ayuda] configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum

Excerpts from lgarciam's message of sáb jul 07 12:16:19 -0400 2012:

> checkpoint_segments establece el máximo número de segmentos de wal (wal_buffers), que se pueden crear antes de que ocurra un check_point, lo que significa que si tienes en la configuración que wal_buffers = 64 Kb y checkpoint_segments = 5, solo pueden crearser 5 segmentos de 64 Kb y esta es la razón por la cual ocurren muchos check_points lo que empeora el acceso a disco, pues tendrían que realizarse muchas escrituras a disco contínuamente, por eso mi recomendación es ir incrementando el valor de checkpoint_segments hasta que no te aparezca más el HINT, o comenzar con un valor de 16.

Tienes una pequeña confusión. Los segmentos de WAL no tienen nada que
ver con wal_buffers. Un segmento de WAL es un archivo de 16 MB que se
guarda en el directorio pg_xlog. Este tamaño no es configurable a menos
que recompiles Postgres. wal_buffers solamente indica cuánto espacio
hay en RAM para guardar cosas que deben escribirse en algún segmento de
WAL.

Aparte de este detalle tu explicación es correcta: si tienes checkpoints
muy seguidos el rendimiento decae, por lo tanto hay incrementar tanto
checkpoint_segments como checkpoint_timeout.

> Sobre autocacuum, tenerlo en off, te puede disminuir el rendimiento de
> las consultas, pués, las tuplas muertas no son eliminadas, y cuando se
> recorren las tablas, es necesario revisar su visibilidad (visibility
> map), para saber que tupla debe formar parte del resultado.

Otra pequeña confusión. El "visibility map" es un archivo muy pequeño
que tiene un bit para cada página de cada tabla. Ese bit es 1 si todas
las tuplas son visibles para todos, es decir, si no hay ninguna tupla
muerta. Es 0 si hay al menos una tupla visible. Por lo tanto cuando
hay que "verificar la visibilidad de una tupla" no se usa el "visibility
map" (puesto que a menos que esté en 1 no tiene información suficiente)
sino la información de visibilidad que está junto con la tupla (xmin y
xmax).

--
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com

Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2012-07-09 01:35:12 Comparacion entre dos Bases de Datos.
Previous Message Alvaro Herrera 2012-07-07 19:43:17 RE: configuración postgres 9 vs postgres 8 problema con checkpoints y autovacuum