From: | Lazaro Rubén García Martinez <lgarciam(at)vnz(dot)uci(dot)cu> |
---|---|
To: | Daymel Bonne Solís <dbonne(at)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 21:32:52 |
Message-ID: | 294D3D02D5E18D42827B2ECFEADEB688214CE9FB31@mx-interno.vnz.uci.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Daymel, muchas gracias por tu respuesta, extensa tu respuesta pero muy concita acorde a lo que preguntaba.
De: Daymel Bonne Solís [mailto:dbonne(at)uci(dot)cu]
Enviado el: martes, 08 de noviembre de 2011 05:55
Para: Lazaro Rubén García Martinez
CC: pgsql-es-ayuda(at)postgresql(dot)org
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 dbonne(at)uci(dot)cu<mailto: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.
*/
[http://cincoheroes.uci.cu/cinco.gif]<http://www.antiterroristas.cu/>
From | Date | Subject | |
---|---|---|---|
Next Message | Daymel Bonne Solís | 2011-11-08 22:25:17 | Re: Duda con bgwriter_delay y wal_writer_delay |
Previous Message | Lazaro Rubén García Martinez | 2011-11-08 21:01:35 | RE: Problema Iniciar Servicio PostgreSQL luego de actualizaciòn |