Re: No detecta deadlocks

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
>

In response to

Responses

Browse pgsql-es-ayuda by date

  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