Re: [Pgsql-ayuda] Log de transacciones

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Jose Joaquin Lorente Garcia <jlorente(at)unesco(dot)upv(dot)es>
Cc: Postgres <pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx>
Subject: Re: [Pgsql-ayuda] Log de transacciones
Date: 2004-01-08 11:40:34
Message-ID: 20040108114033.GA753@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, Jan 08, 2004 at 10:04:31AM +0100, Jose Joaquin Lorente Garcia wrote:

> ¿Existe la posibilidad de conocer el 'timestamp' de una transacción en
> postgresql? Bueno, les explico. Deseamos llevar un log de las
> transacciones mediante programación para realizar posibles auditorías
> y diseñar un sistema de recuperación o backup incremental o más
> eficiente que un dump completo.

Si ese es el objetivo final, creo que es mucho mas conveniente que
pensar en "point-in time recovery"; lo que esto hace es usar los
registros de WAL para actualizar una base de datos (a partir de un dump
completo, por ejemplo, aunque creo que tambien podria ser un snapshot de
PGDATA). Aun no esta implementado en Postgres, aunque algo hay de
trabajo hecho ...

> De esta manera, registramos cada sentencia SQL de una transacción en
> una tabla pero para garantizar la seriabilidad, es decir, que la
> reproducción de esas sentencias tal y como se han producido en tiempo
> real, necesitamos el 'instante' o 'timestamp' de inicio de cada
> transacción.

Te falta un supuesto: que las transacciones se pueden serializar de esta
manera. Para eso necesitas que todas tus transacciones corran con
TRANSACTION ISOLATION LEVEL SERIALIZABLE. Por omision corren en T.I.L.
READ COMMITTED, el cual no te garantiza serializabilidad.

Ejecutandolas de este modo disminuyes la concurrencia (y posiblemente
vas a necesitar mas bucles de reintento para todo, debido a las
transacciones que fallen por inserializabilidad), pero garantizas
serializabilidad. Claro que no estoy seguro si necesitas el timestamp
del inicio de la transaccion o el del momento del compromiso (COMMIT).

Suerte ...

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Use it up, wear it out, make it do, or do without"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2004-01-08 12:53:51 Re: [Pgsql-ayuda] Log de transacciones
Previous Message Jose Joaquin Lorente Garcia 2004-01-08 09:04:31 [Pgsql-ayuda] Log de transacciones