Re: lock timeout

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Lista Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: lock timeout
Date: 2005-01-14 20:30:43
Message-ID: 41E82BF3.6050203@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro Herrera escribió:
> On Fri, Jan 14, 2005 at 04:29:10PM +0100, Oswaldo Hernández wrote:
>
>
>>realmente el sistema de transacciones MVCC con las opciones de 'read
>>commited' y 'serializable' es algo verdaderamente fantástico y que
>>resuelve la mayoria de los casos.
>>
>>Pero a mi entender no los resuelve todos.
>
>
> No, es cierto
>
>
>>El caso que me preocupa en este momento, es que hasta ahora he
>>utilizado, de forma satisfactoria, el sistema de bloqueos como
>>indicadores para control de procesos.
>
>
> Te recomendaria usar el sistema de "user locks". Tienen varias
> caracteristicas que los hacen diferentes de los locks corrientes:
> primero que el control esta todo en la aplicacion, es decir, solo se
> toman en demanda y solo se liberan cuando la aplicacion lo hace.
> Ademas, no son bloqueantes.
>
> La manera mas sencilla de usarlos es a traves del modulo de contrib
> userlock.

No conocia este modulo, lo he instalado y he hecho alguna prueba y si
las suposiciones que hago son correctas (la documentacion es un poquito
escueta), es la solucion idónea para el caso de los procesos. Mejor que
el sistema de bloqueo de registros.

En primer lugar, supongo que aunque la documentacion hace referencia a
utilizar los oids de los registros como parametro para el bloqueo, esto
le sirve unicamente como identificador dentro de su tabla interna de
bloqueos y no realiza ninguna accion sobre la base de datos.
Siendo asi, puedo utilizar mis propios identificadores de proceso como
parametros de bloqueo.

select user_write_lock_oid(5); --crea lock para el proceso nº 5
select user_write_unlock_oid(5); --desbloquea el proceso nº 5

Esta simple prueba ha funcionado sin necesidad de utilizar tablas,
ademas tambien se ha liberado el bloqueo limpiamente al cortar la
comunicacion con un cliente.

El unico pequeño inconveniente es que parece que pasa totalmente del
sistema de transacciones y no hace caso a los rollback, pero sabiendo
esto es solo cuention de tenerlo en cuenta en el momento de la programación.

>
> Suerte,
>

Gracias, esto del postgresql cada vez me gusta mas. :)

El presente correo ha sido analizado por la plataforma Soluciones ADSL
y se encuentra libre de virus.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2005-01-14 21:01:42 Re: Para quien me pueda ayudar...
Previous Message Juan Pablo Espino 2005-01-14 20:09:00 información residual