Sei sulla pagina 1di 3

Conceptos Generales

Cada fila est bloqueado o desbloqueado.


Cuando se ejecuta una orden DML, los bloqueos de fila se obtienen en las filas afectadas y
tambin se obtiene un bloqueo de tabla.

Bloqueo de Fila (TX)


TX es un bloqueo en una sola fila de una tabla.
Se utiliza para evitar que dos o ms transacciones puedan modificar la misma fila.
Una transaccin adquiere un bloqueo de fila para cada fila modificada por una de las
siguientes rdenes:
INSERT
UPDATE
DELETE
MERGE
SELECT ... FOR UPDATE.
El bloqueo de fila existe hasta que la transaccin se confirma o se deshace.
Cuando una transaccin obtiene un bloqueo de fila (TX) de una fila, la transaccin tambin
adquiere un bloqueo de tabla para la tabla en la que reside la fila.
Los bloqueos a nivel de tabla (TM) se utilizan principalmente, para hacer el control de
concurrencia, con operaciones DDL simultneas, tales como, prevenir que una tabla sea
borrada cuando estamos en medio de una operacin DML.

Bloqueos de Tabla (TM)


Una transaccin adquiere un bloqueo de tabla (TM) en las siguientes instrucciones:

INSERT

UPDATE

DELETE

MERGE

SELECT ... FOR UPDATE.


Un bloqueo de tabla se puede mantener en varios modos
X (exclusive)
S (share)
RX (Row exclusive)
RS(Row Share)
SRX (share row exclusive)
Bloqueo de Tabla Exclusivo (X)

Es el modo ms restrictivo de bloqueos de la tabla, permite a la transaccin que tiene


el bloqueo exclusivo escrituras en la tabla.
Es adquirido mediante: LOCK TABLE table IN EXCLUSIVE MODE;
Operaciones Permitidas:
Slo una transaccin puede obtener el bloqueo exclusivo para una tabla.
Slo permite a otras transacciones hacer consultas (query).
La transaccin que obtiene el bloqueo impide a las dems transacciones realizar
cualquier tipo de operaciones de manejo de datos o realizar cualquier tipo de
bloqueo.
No Permitidas:
No permite que otras transacciones hagan ningn tipo de operacin
DML, ni bloqueo.
Bloqueo de Tabla Share(S)
Un bloqueo de Tabla compartido es adquirido automticamente por la tabla
especificada en la siguiente sentencia:
LOCK TABLE table IN SHARE MODE;
Operaciones Permitidas:
Select
Select . For update
No Permitidas:
No permite que otras transacciones hagan actualizaciones ni que
modifiquen la tabla, slo a ella.

LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;

LOCK TABLE table IN EXCLUSIVE MODE;

LOCK TABLE table IN ROW EXCLUSIVE MODE;

Bloqueo de Tabla de Fila Exclusivo (RX)


Indica que la transaccin que tiene el bloqueo, ha hecho cambios a las filas de la tabla.
Un bloqueo de fila de tabla se obtiene de forma automtica cuando ejecutamos:
INSERT INTO table ... ;
UPDATE table ... ;
DELETE FROM table ... ;
LOCK TABLE table IN ROW EXCLUSIVE MODE;
Un bloqueo RX permite que otras transacciones puedan hacer operaciones:

Select
Insert
Update
Delete
Bloqueos
de otras filas en la tabla al mismo tiempo.

No Permiten:
Bloqueo de Tabla compartida (S) o Exclusiva (X)
Bloqueo de Tabla de Fila Shared (RS)
Un bloqueo de tabla de Fila compartido(RS), indica que la transaccin que mantiene el
bloqueo sobre la tabla ha bloqueado algunas filas en la tabla y tiene la intencin de
actualizar
Se consigue mediante las siguientes rdenes:
SELECT .. . FOR UPDATE
LOCK TABLE table IN ROW SHARE MODE;
Es el modo menos restrictivo a nivel de bloqueo de Tabla.
Permite todo tipo de bloqueos sobre la Tabla, excepto el Modo Exclusive (X).
LOCK TABLE table IN EXCLUSIVE MODE;
Se mantiene el bloqueo hasta que la transaccin no haga commit o rollback.
Bloqueo de Tabla de Fila Shared Exclusivo(SRX)
Es el ms restrictivo que un bloqueo de tabla compartido (S).
Se adquiere con el comando:
LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;
Operaciones Permitidas
Slo una transaccin a la vez puede adquirir un bloqueo de SRX en una
tabla determinada.
Consultar tablas
Bloquear filas especficas con SELECT ... FOR UPDATE , pero no para
actualizar la tabla.
No Permiten:
Bloqueos de Tablas de Filas Exclusivo (RX)
Bloqueos de Tablas de Filas Compartidas (RS)
Bloqueos de Tabla compartida (S)
Bloqueos de Tabla exclusiva (X)