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
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 |