Beruflich Dokumente
Kultur Dokumente
Concurrencia
II - Semestre 2007
Transacciones
Transaccin (cont.)
Leer_elemento(X)
Escribir_elemento(X)
Transaccin (cont.)
Leer_elemento(X):
Transaccin (cont.)
escribir_elemento(X):
Concurrencia
Control de Concurrencia
Problemas:
Actualizacin perdida
Actualizacin temporal (lectura sucia)
Resumen incorrecto
Actualizacin Perdida
Actualizacin Perdida
T1
T2
Read-item(X);
X:=X-N;
Read-item(X);
X:=X+M;
write-item(X);
Write-item(X);
Read-item(Y);
Y:=Y+N;
Write-item(Y);
TIEMPO
Actualizacin perdida
10
Actualizacin Temporal
11
Actualizacin Temporal
12
Actualizacin Temporal
TIEMPO
T1
T2
Read-item(X);
X:=X-N;
Write-item(X);
T2 se limita a
reservar M asientos
en el primer vuelo (X)
al que hace
referencia T1
Read-item(X);
X:=X+M;
write-item(X);
Read-item(Y);
Resumen Incorrecto
14
Resumen Incorrecto
TIEMPO
T1
T3
Read-item(X);
X:=X-N;
Write-item(X);
Sum:=0;
Read-item(A);
Sum:=sum+A;
Read-item(Y);
Y:=Y+N;
Write-item(Y);
Read-item(X);
Sum:=sum+X;
Read-item(Y);
Sum:=sum+Y;
Manejador de Transacciones
Tipos de Fallos
Tipos de Fallos
18
Estado de Transacciones
begin
activa
end
Parcialmente
confirmada
commit
confirmada
abort
abort
fallida
terminada
19
Estados de Transacciones
20
Estados de transacciones
Caractersticas de las
transacciones
22
Planes
P1:r1(X);r2(X);w1(X);r1(Y);w2(X);w1(Y);
r=read, w=write,a:abort, c:commit
23
Planes
24
Seriabilidad de planes
25
Seriabilidad de planes
26
T2
T1
Read-item(X);
X:=X-N;
Write-item(X);
Read-item(Y);
Y:=Y+N;
Write-item(Y);
PLAN A
Read-item(X);
X:=X+M;
write-item(X);
27
T2
Read-item(X);
X:=X-N;
Write-item(X);
Read-item(X);
X:=X+M;
write-item(X);
Read-item(Y);
Y:=Y+N;
Write-item(Y);
PLAN B
28
Equivalencia de planes
29
Equivalencia de Planes
Algoritmo
Para cada transaccin Ti que participa en el
plan crear un nodo etiquetado Ti en el grafo.
Para cada paso en P en el que Tj ejecuta
una orden r(X) despus de que Ti ejecute
una orden w(X), crear un arco (Ti ->Tj) en el
grafo
30
Equivalencia de Planes
Algoritmo
Para cada paso en P en que Tj ejecuta una
operaci w(X) despus de que Ti ejecute r(X),
crear un arco (Ti ->Tj) en el grafo
Para cada paso en P en que Tj ejecuta w(X)
despus de que Ti ejecute w(X), crear un arco (Ti >Tj) en el grafo
El Plan P es serializable si y solo si el grafo no
tiene ciclos.
31
Equivalencia de Planes
X
T1
X
T2
T1
T2
Plan B
Plan A
T1
Read-item(X);
X:=X-N;
X
T1
T2
Read-item(X);
X:=X+M;
T2
X
Plan C: No Serializable
Write-item(X);
Read-item(Y);
write-item(X);
Y:=Y+N;
Write-item(Y);
32
Ejercicio
T1:r(X);w(X);r(Y);w(Y);
T2:r(Z);r(Y);w(Y);r(X);w(X);
T3:r(Y);r(Z);w(Y);w(Z);
T1
T2
r(Z)
r(Y)
w(Y)
T3
T2
r(Y)
r(Z)
r(X)
w(X)
r(X)
r(Y)
w(Y)
w(X)
w(Y)
w(Z)
y,z
T1
y
T3
No es serializable
33
Archivo de log
34
Puntos de revisin
Puntos de revisin
36
Puntos de revisin
t1
t2
t3
t4
t5
checkpoint
Transacciones en SQL
Modo de acceso
39
40
Nivel de aislamiento
Violaciones (1)
Violaciones (2)
Nivel de
Aislamiento
Lectura
sucia
Lectura no
repetible
Fantasmas
Lectura no
confirmada
Si
Si
Si
Lectura
confirmada
No
Si
Si
Lectura
repetible
No
No
Si
Serializable
No
No
No
43
Ejemplo de SQL
EXEC SQL WHENEVER SQLERROR GOTO UNDO;
EXEC SQL SET TRANSACTION
READ WRITE
DIAGNOSTICS SIZE 5
ISOLATION LEVEL SERIALIZABLE;
EXEC INSERT;
EXEC UPDATE..;
EXEC COMMIT;
GOTO: THE_END;
UNDO: EXEC SQL ROLLBACK;
THE_END:;
44
Tcnicas de Control de
Concurrencia
Tcnicas de bloqueos
46
Tcnicas de bloqueos
Tipos de bloqueo
Exclusivos o binario: cuando una transaccin mantiene un
bloqueo de este tipo, ninguna otra transaccin puede acceder al
objeto bloqueado, ni bloquearlo, hasta que sea liberado por la
transaccin que lo haba retenido. Se utiliza cuando se quiere
actualizar datos.
Bloqueo compartido: cuando una transaccin bloquea en este
modo, permite que otras transacciones retengan tambin el
objeto en bloque compartido, pero no exclusivo. Este tipo se
utiliza cuando no se requiere actualizar datos, pero se desea
impedir cualquier modificacin mientras los datos son
consultados.
47
Reglas de esquema de
bloqueos (1)
Reglas de esquema de
bloqueos (2)
Una transaccin no emitir una operacin de
bloqueo de lectura sobre X si ya posee un bloqueo
de lectura compartido o de escritura sobre el
elemento X. Esto tiene algunas excepciones.
Una transaccin no emitir una operacin de
bloqueo de escritira sobre X si ya posee un bloqueo
de lectura compartido o de escritura sobre el
elemento X.
Una transaccin T no emitir una operacin de
desbloquear X a menos que ya posea un bloqueo
de lectura compartido o escritura para X
49
Reglas de esquema de
bloqueos (3)
En algunas ocasiones es posible la conversin de
bloqueos, lo que permite que un bloqueo de lectura
pase a escritura o vice versa. Para ello, la tabla de
bloqueos debe incluir identificacin de
transacciones en el registro de bloqueo y as saber
qu transacciones poseen bloqueos.
50
Bloqueo de 2 Fases
51
Bloqueo de 2 Fases
54
55
Tcnicas de bloqueo
56
Bloqueo Mortal
T1
Bloqueo lectura(Y);
Lee(Y);
T1
Bloqueo_lectura(X);
Lee(X);
Bloqueo_escritura(X)
Bloqueo_escritura(Y)
T1
T2
Grafo de espera
57
Protocolo de prevencin de
deadlock (1)
58
Protocolo de prevencin de
deadlock (2)
59
Protocolo de prevencin de
deadlock (3)
60
Deteccin de Deadlock
61
Tcnicas de bloqueo
Tcnicas de bloqueo
63
Modos de Bloqueo:
Granularidad
64
65
Ejemplo
66
Tcnicas Optimistas
68
Integridad
69
Operaciones semnticamente
inconsistentes
70
Operaciones semnticamente
inconsistentes
71
Reglas de Integridad
Seguridad
73
Seguridad
74
Seguridad