Daymel, muchas gracias por tu respuesta, extensa tu respuesta pero muy concita 
acorde a lo que preguntaba.

De: Daymel Bonne Solís [mailto:[email protected]]
Enviado el: martes, 08 de noviembre de 2011 05:55
Para: Lazaro Rubén García Martinez
CC: [email protected]
Asunto: Re: [pgsql-es-ayuda] Duda con bgwriter_delay y wal_writer_delay

El 08/11/11 14:11, Lazaro Rubén García Martinez escribió:
Hola a todos en la lista. Les escribo porque quería saber cuál es la diferencia 
entre los parámetros de configuración bgwriter_delay y wal_writer_delay, y qué 
relación tienen con los procesos de Postgres writer y wal writer, además 
también quisiera conocer en qué se diferencian ambos procesos, según tengo 
entendido, bgwriter_delay es el tiempo en milisegundos en que el proceso writer 
permancerá dormido hasta que inicie otra ronda donde haga un flush a los 
buffers de wal para llevar las actualizaciones a disco, mientras el parámetro 
wal_writer_delay es el tiempo en milisegundos en que el proceso wal writer 
permanecerá dormido. Básicamente la pregunta sería en que se diferencian los 
procesos de Postgres writer y wal writer, y de que se encarga cada uno??
El wal_writer es el proceso especializado que escribe los cambios en los 
ficheros WAL, ejemplo:

Si queremos insertar una nueva tupla, primero PostgreSQL encuentra en cual 
página la pondremos. Puede ser una nueva si todas las páginas de la tabla están 
llenas o cualquier otra si hay espacio en alguna.
Una vez seleccionada la página, PostgreSQL la lee en la memoria (en el 
shared_buffer) y realiza los cambios haciendo write() (sin hacer fsync 
todavía), por lo que se realiza muy rápido. Si se realiza COMMIT PostgreSQL 
realizará fsync() a los ficheros WAL. Este fsync lo realiza el proceso 
wal_writer.

Si se continua haciendo esto por mucho tiempo, se tendrá muchas páginas 
modificadas en memoria y muchos registros WAL.
Cuando los cambios son escritos hacia la página real en el disco?

Cuando ocurra cualquiera de las siguientes situaciones:

* Page swap
* Checkpoint

Page swap: Si todos los espacios en el shared_buffer están ocupados por páginas 
que han sido modificadas, y por alguna actividad del usuario se necesita cargar 
otra página del disco, se extrae una página de la memoria y en su lugar se 
coloca la nueva. Si la página extraída está "sucia" se sincronizará 
primeramente a la tabla en el disco.

De esta sincronización se encarga el proceso bgwriter.

Extensa explicación pero, espero haber aclarado tu duda.



--

  Daymel Bonne Solís      [email protected]<mailto:[email protected]>

  PostgreSQL UCI          http://postgresql.uci.cu



  /*

   * Los programas se regalan, el conocimiento

   * se dispersa, y el misterio se vende,

   * nosotros vivimos de vender el misterio.

   */

[http://cincoheroes.uci.cu/cinco.gif]<http://www.antiterroristas.cu/>

Responder a