From: | Raúl Andrés Duque <raulandresduque(at)hotmail(dot)com> |
---|---|
To: | "Alvaro Herrera" <alvherre(at)commandprompt(dot)com> |
Cc: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: No detecta deadlocks |
Date: | 2007-01-24 10:21:06 |
Message-ID: | BAY135-DAV16841BBD71E1F0AA33B107BAAC0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gracias Alvaro.
Estoy siguiendo el ejemplo que dan en las páginas 262-264 del Libro:
"Beginning Databases with PotgreSQL" de Neil Mattthew y Richard Stones. El
ejemplo esta bien ... lo que me faltaba era adicionar el UPDATE del id=1 en
la 2da sesión (sin importar que la 1ra sesión había quedado "esperando") ...
ya con eso me detecta el deadlock.
Cómo referencia he subido las páginas citadas a la web:
http://postgresql.coolinc.info/lock.pdf
Ahora me surge una duda .... si existe un bloqueo porque se queda "esperando
a que sea liberado por la otra sesión" ... no debería haber un timeout y
abortar alguna de ellas ... he esperado más de 1/2 hora y sigue "esperando"
..
Gracias.
Atentamente,
RAUL DUQUE
Bogotá, Colombia
----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
To: "Raúl Andrés Duque" <raulandresduque(at)hotmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Tuesday, January 23, 2007 11:54 PM
Subject: Re: [pgsql-es-ayuda] No detecta deadlocks
> Raúl Andrés Duque escribió:
>> Estoy haciendo pruebas de detección de deadlock y no me los detecta, de
>> hecho la transacción se queda bloqueada indefinidamente ... recuerdo
>> haber
>> echo esas mismas pruebas con postgresql 8.1.5 y no tuve problemas.
>>
>> Actualmente tengo postgresql 8.2.1 en windows xp professional SP2.
>> deadlock_timeout = 1s
>>
>> La prueba que hago es:
>>
>> SESION 1 SESION 2
>> BEGIN;
>> BEGIN;
>> UPDATE .. WHERE id=1
>> UPDATE .... WHERE
>> id=2
>> UPDATE ... WHERE id=2
>>
>> En este punto se queda bloqueado de forma indefinida.
>
> Eso no es un deadlock, porque la sesion 2 no ha sido bloqueada. Si
> pruebas un UPDATE WHERE id=1 en la sesion 2 si te reportara un deadlock.
> Si haces un COMMIT o ROLLBACK en la sesion 2 tambien se liberara la
> sesion 1.
>
> Un deadlock no es lo mismo que quedarse esperando que otro libere un
> lock ...
>
> --
> Alvaro Herrera
> http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
From | Date | Subject | |
---|---|---|---|
Next Message | pablo | 2007-01-24 13:39:48 | llamada a procedimiento con parametr |
Previous Message | Alvaro Herrera | 2007-01-24 04:54:52 | Re: No detecta deadlocks |