Re: Duda con bgwriter_delay y wal_writer_delay

From: Daymel Bonne Solís <dbonne(at)uci(dot)cu>
To: Lazaro Rubén García Martinez <lgarciam(at)vnz(dot)uci(dot)cu>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda con bgwriter_delay y wal_writer_delay
Date: 2011-11-08 22:25:17
Message-ID: 4EB9AC4D.3020306@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 dbonne(at)uci(dot)cu
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.
*/

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 Lazaro Rubén García Martinez 2011-11-09 13:24:13 Duda con synchronous_commit y wal_writer_delay
Previous Message Lazaro Rubén García Martinez 2011-11-08 21:32:52 RE: Duda con bgwriter_delay y wal_writer_delay