Beruflich Dokumente
Kultur Dokumente
TEMA 4
“CONTROL DE CONCURRENCIA DE
TRANSACCIONES “
Elaborado por:
ING. Ubaldo Pérez Ferreira.
monousuario multiusuario
Multiprogramación
Varios usuarios pueden usar un mismo equipo a la
vez gracias a la multiprogramación: el
computador puede procesar al mismo tiempo
varias transacciones.
T1 T1 T1 CPU 1
CPU 1 T2 T2 T2 CPU 2
t1 t2 t3 t4
Intercalado Simultaneo
Si sólo hay una CPU, el Sistema Si el equipo tiene varias CPU,
Operativo de multiprogramación es posible el procesamiento
reparte el tiempo de CPU entre las simultáneo (paralelo) de
transacciones: transacciones
ejecución concurrente intercalada
modelo que supondremos
PROCESADORES
RISC vs x86
Transacciones Concurrentes
T1 T1 T1
T2 T2 T2
Tiempo Tiempo
Transacciones Concurrentes
Ti: 1 . leer(A);
2. A= A – 10.000;
3. Escribir(A);
4. leer(B);
5. B= B + 10.000;
6. Escribir(B);
Problemas de la concurrencia
i) Problemas de Actualización Perdida
¿Por qué es necesario el control de la concurrencia?
• ... porque pueden surgir problemas si las transacciones
concurrentes se ejecutan de manera no controlada
X= 80, N=5, M=4, Y=70
T1 T2
Ejemplo: sistema de bases de datos que
permite hacer y anular reservas de asientos X=80 leer(X);
en vuelos de diferentes compañías aéreas. X=80-5 X= X-N; (x=75)
X=80+4 X=80 leer(X);
– Se almacena un registro por cada vuelo, que
incluye, entre otras cosas, el número de
X=75 X= X+M; (X=84)
asientos reservados en el vuelo escribir(X);
– Sean dos transacciones T1 y T2 Y=70 leer(Y);
concurrentes: X=84 escribir(X);
• T1 transfiere N reservas realizadas en
Y=70 + 5
un vuelo X a otro vuelo Y Y=Y+N; (Y=75)
Y=75 escribir(Y); El elemento X =84 tiene un valor
• T2 reserva M plazas en el vuelo X
incorrecto debe ser X=79 porque s
actualización por T1 se ‘perdió’ (se
sobrescribió)
…
leer_elemento(X); T4 lee X después
… de restar N
Y:=Y+N;
escribir_elemento(Y);
Planificador de Transacciones
Administrador de
Las transacciones solicitan operaciones de
Transacciones Lectura/Escritura
T1, T2, …, Tn
Requerimientos de
Lectura/Escritura
El planificador crea agendas, secuencias ordenadas de
PLANIFICADOR las operaciones de Lectura/Escritura tomadas por una o
más transacciones
Lectura/Escritura
Disco
Protocolo de Control de Concurrencias
Para evitar que se destruya la consistencia de la base de datos los
SGBD utilizan mecanismo denominados Protocolo de Control de
Concurrencia.
• El objetivo de un Protocolo de Control de Concurrencia:
– Planificar las transacciones de forma que no ocurran interferencias entre
ellas, y así evitar la aparición de los problemas mencionados anteriormente.
– Solución obvia: no permitir intercalación de operaciones de varias
transacciones
T1 T2 T1 T2
leer(X); leer(X);
X:= X-N; X:= X+M;
escribir(X); escribir(X);
leer(Y); leer(X);
Y:=Y+N; X:= X-N;
escribir(Y); escribir(X);
leer(X); leer(Y);
X:= X+M; Y:=Y+N;
escribir(X); escribir(Y);
Planificación A Planificación B
Protocolo del Control de Concurrencias
• Pero el objetivo de un SGBD multiusuario también es maximizar el
grado de concurrencia del sistema
• Si se permite la intercalación de operaciones, existen muchos
órdenes posibles de ejecución de las transacciones
T1 T2 T1 T2
leer_elemento(X); leer_elemento(X);
X:= X-N; X:= X-N;
leer_elemento(X); escribir_elemento(X);
X:= X+M;
leer_elemento(X);
escribir_elemento(X); X:= X+M;
leer_elemento(Y); escribir_elemento(X);
escribir_elemento(X); leer_elemento(Y);
Y:=Y+N; Y:=Y+N;
escribir_elemento(Y); escribir_elemento(Y);
Ti: 1 . leer(A);
2. A= A – 10.000;
3. Escribir(A);
4. leer(B);
5. B= B + 10.000;
6. Escribir(B);
Planificación de Transacciones Concurrentes
leer l
escribir e
commit c
rollback r
Planificación de Transacciones Concurrentes
T1 T2
leer(X) leer(X)
X=X-N X=X+M
escribir(X) escribir(X)
Dadas las
transacciones T1 y T2 leer(Y)
Y=Y+N
escribir(Y)
PA: T2
Operaciones de la
Transacción T1
l2(X) ; e2(X) ; c2 ;
Operaciones de la
T2 l2(X) ; e2(X) ; c2 ; Transacción T1
PB: T1 Operaciones de la
Transacción T2
l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ;
Este es el objetivo de la
Serializabilidad
Planificación Serializable
Un plan equivalente: es aquel que produce los mismos
efectos en la BD.
Una planificación P (no serie) es serializable si es
equivalente a alguna planificación serie de las mismas
n transacciones
– Una planificación que no es equivalente a ninguna ejecución
en serie, es una planificación no serializable
• Toda planificación serializable es correcta
– Produce los mismos resultados que alguna ejecución
en serie
• Dos maneras de definir la equivalencia entre
planificaciones:
– Equivalencia por conflictos
– Equivalencia de vistas
Planes Equivalentes por Conflictos
¿Cuándo dos operaciones de un plan están en
conflicto?
En una planificación, dos operaciones están en conflicto si
– pertenecen a diferentes transacciones,
– tienen acceso al mismo elemento leer(X),
– y al menos una de ellas es escribir(X)
P: l1(X) ; e2(X) ; Operaciones en Conflictos
P: w1(X) ; e2(X) ;
P: w1(X) ; l2(X) ;
T1 T2
T1 T2
Base de
Datos
Tablas
El Planificador Bloquea el
Las transacciones
Administrador de
dato X al que tiene acceso las Transacciones
solicitan operaciones
operaciones lectura/escritura T1, T2, …, Tn de Lectura/Escritura
de las transacciones.
Requerimientos de
LOCK TABLE Lectura/Escritura
l1(x); PLANIFICADOR
e1(x);
Ejecuta las operaciones de
Lectura/Escritura de manera segura
La operación COMMINT y
ROLLBACK libera el dato BUFFER
bloqueado por la
transacción. l1(x);
e1(x);
Procurando la Serializabilidad usando Bloqueo (Lock)
Look(B);
Leer(B);B=B+100;Escribir(B); 150
Unlock(B);
T1 T2 A B
25 25
Look(A);
Leer(A); Look(B);
Leer(B);
A=A+100;Escribir(A); 125
B=B*2;Escribir(B); 50
Look(B);
Look(A);
Deadlock
Procurando la Serializabilidad usando
Shared y Exclusive Locks
X
Share Lock (Ls)
X
Exclusive Lock (Ls)
Procurando la Serializabilidad usando
Shared y Exclusive Locks
REPEATABLE READ Especifica que las instrucciones no pueden leer datos que han Datos Fantasma
sido modificados pero aún no confirmados por otras
(Lectura repetible) transacciones y que ninguna otra transacción puede modificar
los datos leídos por la transacción actual hasta que ésta finalice
SNAPSHOT Especifica que los datos leídos por cualquier instrucción de una
transacción sean la versión coherente, desde el punto de vista
(instantánea) transaccional, de los datos existentes al comienzo de la
transacción
ROWLOCK,
PAGLOCK ,
TABLOCK,
TABLOCKX ,
XLOCK,
NOLOCK,
NOWAIT,
READCOMMITTED,
READCOMMITTEDLOCK,
READUNCOMMITTED,
SERIALIZABLE,
Bloqueo Compartido por tabla en SQL Server
T1
BEGIN TRAN
….
SELECT * T2
FROM persona WITH ( RowLock ) ….
WHERE Ciudad = (´SC´)
… SELECT * FROM persona WHERE Codigo=1
…. …
COMMIT/ROLLBACK
Bloqueo Exclusivo por filas en SQL Server
T1
BEGIN TRAN
….
SELECT * T2
FROM persona WITH ( RowLock ,xLock) ….
WHERE Ciudad = (´SC´)
… SELECT * FROM persona WHERE Codigo=1
…. …
COMMIT/ROLLBACK
Bloqueo Exclusivo por filas en SQL Server