Re: Monitoreo gráfico de postgresql, wal, oracle, etc

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: dario_d_s(at)unitech(dot)com(dot)ar
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Monitoreo gráfico de postgresql, wal, oracle, etc
Date: 2005-08-15 03:11:55
Message-ID: 20050815031155.GB19959@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Sun, Aug 14, 2005 at 08:34:24PM -0400, dario_d_s(at)unitech(dot)com(dot)ar wrote:

> - ¿Porque guarda WAL la página involucrada en una modificación,
> posterior al checkpoint?. ¿Estoy entendiendo mal? ¿cuando dice
> "posterior al checkpoint", debería pensar en posterior al inicio del
> checkpoint o posterior a la finalización del checkpoint?,

> ¿Cuál es la amenaza sobre esa página? ¿Esta página contiene
> información especial (metadata)? ¿No guarda WAL todas las sentencias
> de las transacciones? Estuve googleando, y no le encuentro la vuelta.

La amenaza es escritura parcial. Si la pagina se escribe hasta la
mitad, y en ese momento el servidor "se cae", para WAL es perfectamente
posible que la pagina aparezca marcada como recuperada(*), pero solo la
primera mitad del contenido sea correcto, y el resto este corrupto.
Para evitar esto es que se guarda la imagen completa de cada pagina la
primera vez que se modifica despues de un checkpoint -- al recuperar,
simplemente se sobreescribe la pagina con la imagen en WAL.

(*) Que una pagina aparezca como recuperada es una informacion que se
mantiene en el LSN (L... sequence number, creo que "latest") de la
pagina. Cada vez que se hace una modificacion, se pone un nuevo LSN.
Al hacer la recuperacion uno sabe que la pagina ya fue actualizada con
cada operacion registrada en WAL si y solo si el LSN de la pagina es
mayor o igual al LSN de la operacion en WAL.

Posterior al checkpoint, entiendo que significa posterior al inicio del
checkpoint, pero no estoy seguro. (No conozco los detalles como en que
momento se escribe el registro de checkpoint, si inmediatamente al
iniciarlo o cuando se termina; ni si el checkpoint involucra todos los
registros hasta el registro de checkpoint, o solo hasta el ultimo
registro que habia cuando inicio el checkpoint; etc. Tendrias que mirar
el codigo, o preguntarle a Tom Lane ... )

Ojo que WAL no guarda "las sentencias" de las transacciones. La
informacion de WAL es de nivel mucho mas bajo: en una pagina de heap
puede ser "inserte esta tupla en la posicion X", "elimine la tupla Y",
"bloquee la tupla Z", etc. En una pagina de indice puede ser "haga un
split de esta pagina", "ponga un puntero a la tupla X en la posicion N
en esta pagina", "elimine este puntero". Etc.

> - ¿Es (o será) posible hacer uso de un backup o incremental?
> ¿Aceleraría la restauración y recuperación de una base en postgresql?

Eso es PITR. En la documentacion hay algo al respecto. Si, es posible
hacer respaldos incrementales con esto. El rendimiento puede ser mejor
que usando pg_dump, pero puede usar mas espacio.

> - ¿Alguien tiene a mano un documento de WAL? (si es relacionado a
> postgresql, mejor, sino también)

Si mal no recuerdo hay un libro de Jim Gray que era como la biblia de
este tema, no recuerdo el titulo. Aca tengo uno que se llama
"Concurrency Control and Recovery in Database Systems" de Philip
Bernstein, Vassos Hadzilacos y Nathan Goodman, que se supone que toca
este tema. Seguro que puedes encontrarlo googleando por ahi.

--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"Aprende a avergonzarte más ante ti que ante los demás" (Demócrito)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2005-08-15 07:18:07 Re: rownum
Previous Message Alvaro Herrera 2005-08-15 02:54:35 Re: Traducción de manuales.