Re: Bloquear registros

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: "Cristofer N(dot) Reyes A(dot)" <crreyes(at)alumnos(dot)inf(dot)utfsm(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Bloquear registros
Date: 2005-08-12 22:50:51
Message-ID: 20050812225051.GL16953@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Fri, Aug 12, 2005 at 06:04:34PM -0400, Cristofer N. Reyes A. wrote:
> On Fri, Aug 12, 2005 at 05:20:49PM -0400, Alvaro Herrera wrote:
> >
> > No -- un registro bloqueado queda bloqueado hasta el fin de la
> > transaccion. Si haces un UPDATE, se crea un nuevo registro y el antiguo
> > se marca como eliminado (esto es MVCC), pero el nuevo registro es
> > invisible a transacciones concurrentes, mientras que el antiguo sigue
> > siendo visible pero bloqueado.
>
> Y una transaccion (otro select) puede saber que el registro que esta accediendo
> esta bloqueado por el momento?

Lamentablemente no.

(Si _realmente_ tienes muchos deseos de saberlo, puedes examinar el Xmax
del registro y verificar si hay un lock con ese transactionid en
pg_locks. Si hay, esta bloqueado. Si no hay, la ultima transaccion que
lo bloqueo ya termino. Nada te garantiza que no llegue otra transaccion
y lo bloquee, en el intervalo entre que lo verifiques y que intentes
bloquearlo ...)

Yo creo que el problema al que te enfrentas se resuelve de otro modo.
Mira si te sirve usar "userlocks" (por ej. contrib/pg_userlock).

> tengo miedo de que se produzca un deadlock :-S

El sistema te avisa en caso de suceder y aborta una de las
transacciones -- no se va a quedar pegado eternamente.

--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"The Postgresql hackers have what I call a "NASA space shot" mentality.
Quite refreshing in a world of "weekend drag racer" developers."
(Scott Marlowe)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Pascual De Ruvo 2005-08-12 23:47:00 Re: A toda la "Comunidad en Español de PostgreSQL"
Previous Message Martin Marques 2005-08-12 22:31:32 Re: Monitoreo gráfico de postgresql