bloquear tabla en modo exclusivo

From: Kernel <jucabapa(at)gmail(dot)com>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: bloquear tabla en modo exclusivo
Date: 2015-07-26 10:59:49
Message-ID: 55B4BDA5.70608@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,

Estoy empezando con esto de las transacciones, y ya me dado de bruces
con esto del deadlock.

He empezado a leer y mas o menos he entendido el problema , pero por
favor corregime si no lo he entendido bien.

Por lo que veo hay varios casos en los que podemos obtener un deadlock
de estos :

1.- que una transacción t1 necesite que termine la t2 y esta t2 a su vez
necesita que termine t1 para poder terminar, entonces el gestor detecta
esto y elimina la mas antigua (por ejemplo la t1) y devuelve el deadlock
en la t1, y la t2 termina correctamente.

2.- Empieza la transaccion t1(1) (varios insert en la tabla x), y
despues otro usuario lanza la misma transaccion t1(2), si la t1(1) tarda
mucho tiempo en terminar, el gestor devuelve el deadlock a la t1(1) y
asi la t1(2) se puede comenzar y terminar correctamente

¿correcto?, ¿voy bien hasta qui?.

Tengo un proceso de cierre de inventario que puede tardar 10 minutos en
terminar y no quiero que nadie pueda tocar la tabla , ni insertar, ni
modificar.

Había pensado que si pongo 'LOCK TABLE movimientos IN EXCLUSIVE MODE'
y no recibía ningún error, la tabla ya era de uso exclusivo de mi
proceso, que nadie podía molestar a mi proceso y que al resto de
procesos debían de esperar para iniciarse o les daría un error al
iniciar, pero mi sorpresa es que mi proceso recibe un deadlock y el
resto termina bien.

Si el cierre se ejecuta solo, termina perfectamente, pero en el momento
que algun usuario no se esta quieto , intenta introducir un movimiento
ya recibo el deadlock . Como es muy difícil que un usuario te haga caso
cuando le dices que no trabaje, había pensado que al bloquear la tabla
les daría error a ellos y no podrían hacer nada hasta que el cierre
terminara.

¿ que estoy haciendo mal ? , ¿como lo puedo hacer?

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2015-07-27 15:10:14 Re: bloquear tabla en modo exclusivo
Previous Message jvenegasperu . 2015-07-24 16:25:18 ordenamiento de union de consultas