Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tran de Control y Concurrencia
Tran de Control y Concurrencia
DE DATOS
Ing. Armando Caballero Alvarado
acaballeroa@upao.edu.pe
www.acaballeroa.upao.edu.pe
CAPITULO IX
TRANSACCIONES Y CONTROL
DE CONCURRENCIA
Contenido
1. Transacciones
2. Control de concurrencia
TRANSACCIONES
Concepto de Transacción
• Un transacción es una unidad de ejecución de programa que
accede y que posiblemente actualiza varios elementos de datos.
• Un transacción debe mantener una base de datos consistente
• Durante la ejecución de una transacción la base de datos puede
ser inconsistente
• Cuando la transacción es confirmada, la base de datos debe ser
consistente
• Dos principales asuntos para tratar con:
– Varias clases de fallas, tal como fallas de hardware y caídas
del sistema
– Ejecución concurrentes de múltiples transacciones
Propiedades ACID
Para mantener la integridad de los datos, el sistema de base de datos debe asegurarse:
T3 T4 T3 T4
leer(Q) escribir(Q)
escribir(Q) leer(Q)
escribir(Q) escribir(Q)
Conflicto de Secuencialidad (Cont.)
• La planificación 3 de abajo puede ser transformado en la planificación 1, una planificación serial
donde T2 sigue a T1, por series de intercambio de instrucciones no conflictivas.
• La 3rd y 4th líneas pueden ser intercambiadas con las líneas 5th y 6th
• En consecuencia la siguiente planificación 3 esta en conflicto secuencial.
Planificación 3
Planificación 5
Después de intercambiar un par de instrucciones no conflictivas en la
planificación 3
Planificación 6 –
Una planificación serial que es equivalente a la planificación 3
Definición de Transacción en SQL
• El lenguaje de manipulación de datos debe incluir un constructor
para especificar el conjunto de acciones que comprende una
transacción.
• En SQL, una transacción inicia implícitamente.
• Una transacción en SQL termina con:
– Commit work confirma la transacción actual e inicia una
nueva.
– Rollback work causa abortar la transacción actual.
• Niveles de consistencia especificados por SQL-92:
– Serializable — defecto
– Repeatable read
– Read committed
– Read uncommitted
Control de transacciones en Oracle
CONTROL DE
CONCURRENCIA
Protocolos basados en Bloqueo
• Un bloqueo es un mecanismo para controlar el acceso concurrente a
los ítem de datos
• Los ítem de datos pueden ser bloqueados en dos modos :
1. modo exclusivo (X): ítem de datos pueden ser leídos como escritos.
– X-lock es solicitado usando la instrucción lock-X.
2. modo shared (S): ítem de datos pueden ser solo leídos.
– S-lock es solicitado usando la instrucción lock-S.
• Solicitudes de Bloqueo son hechos por el administrador de
concurrencia
• La transacción puede proceder solo después de que la solicitud ha sido
concedida
Protocolos basados en Bloqueo (Cont.)
• Matriz de compatibilidad de Bloqueo
T1 T2 administración
Ejemplo de transacciones con control concurrencia
bloqueos lock-X(B)
grant-X(B, T1)
T1: lock-X(B) T2: lock-S(A) Read(B)
B = B - 50;
read(B) read(A) write(B);
B = B -50; unlock(A) unlock(B);
lock-S(A)
write(B); lock-S(B) grant-S(A, T2)
read(A)
unlock(B); read(B);
unlock(A)
lock-X(A); unlock(B); lock-S(B)
grant-S(B, T2)
read(A); display(A+B); read(B);
A = A + 50; unlock(B);
display(A+B);
write(A); lock-X(A);
unlock(A); grant-X(A, T2)
read(A);
A = A + 50;
write(A);
unlock(A);
Interbloqueo de protocolos basado en Bloqueo
• Considere la planificación parcial
• Ninguno de las transacciones T3 ni T4 pueden avanzar
– Ejecutando lock-S(B) causa que T4 espere por T3 para
liberar el bloqueo en B, mientras esta ejecutando lock-
X(A) causa que T3 espere por T4 para liberar este
bloqueo en A.
• Tal situación es llamada deadlock (bloqueo sin salida o
abrazo mortal).
– Para manejar un deadlock uno de las transacciones T3 o
T4 debe ser finalizada y esto liberara el bloqueo.
write(A) XA1
Ejemplos write(X)
lock-X(B)
de protocolo lock-S(Y)
unlock(A)
de dos fases A2read(Y)
lock-X(A) A2A2+K
lock-X(Y)
read(A)
YA2
AA*2 write(Y)
unlock(X)
write(A)
A1read(X)
read(B) A1A1*0.01
BB+100 lock-X(X)
XA1
write(B)
write(X)
unlock(B) lock-S(Y)
lock-X(B) unlock(Y)
A2read(Y)
unlock(A)
A2A2*0.01
read(B) lock-X(Y)
BB*2 YA2
write(Y)
write(B)
unlock(X)
unlock(B) unlock(Y)
Protocolo de bloqueo de dos fases (Cont.)
• No puede haber schedule secuenciable en conflicto que no se puede obtener si se
usa bloqueo de dos fases.
• Sin embargo, en la ausencia de información adicional (ej. ordenando acceso a los
datos), bloqueo de dos fases es necesaria por secuencialidad en conflicto en el
siguiente sentido:
En buena cuenta una transacción Ti que no siga un bloqueo de dos fases, podemos
encontrar una transacción Tj que usa un bloqueo de dos fases, y un schedule para
Ti y Tj que no es secuenciable en conflicto.
Planificaciones
secuenciales
de bloqueo de dos
fases
Planificación secuenciable
Planificaciones secuenciales por otros protocolos de
control de concurrencia
Bloque de dos fases con conversión de bloqueos