Documente Academic
Documente Profesional
Documente Cultură
Daniel Futrill
Prof. Ana Aguilera
1 Introduccin
2 Concepto de Transacciones
2.1 Propiedades de las transacciones
2.2 Condiciones de terminacin de una transaccin
2.3 Caracterizacin de transacciones
2.4 Transacciones y planificadores
2.5 Ejecucin concurrente de transacciones
2.5.1 Motivos para la ejecucin concurrente
2.5.2 Seriabilidad
2.5.3 Anomalas de Ejecucin
2.5.4 Control de concurrencia basado en lock (cerraduras)
2.6 Tipos de Transacciones
2.7 Estructura de transacciones
2.8 Aspectos relacionados al procesamiento de transacciones
3 Conceptos relacionados con el control de concurrencia
3.1 Administracin de locks
3.2 Deadlocks prevencin y deteccin
3.3 Tcnicas de cerraduras especializadas
3.4 Control de Concurrencia sin locking
Hasta este momento, las primitivas bsicas de acceso que se han considerado
son las consultas. Sin embargo, no se ha discutido qu pasa cuando, por
ejemplo, dos consultas tratan de actualizar el mismo elemento de datos, o si
ocurre una falla del sistema durante la ejecucin de una consulta. Dada la
naturaleza de una consulta, de lectura o actualizacin, a veces no se puede
simplemente reactivar la ejecucin de una consulta, puesto que algunos datos
pueden haber sido modificados antes de la falla. El no tomar en cuenta esos
factores puede conducir a que la informacin en la base de datos contenga
datos incorrectos.
El concepto fundamental aqu es la nocin de "ejecucin consistente" o
"procesamiento confiable" asociada con el concepto de una consulta. El
concepto de una transaccin es usado dentro del dominio de la base de datos
como una unidad bsica de cmputo consistente y confiable.
La Base de
Datos en
estado
consistente
Inicio de Transaccin
T1
La Base de Datos
temporalmente en un
estado inconsistente
durante la ejecucin de la
transaccin
Ejecucin de la
Transaccin T1
La Base de
Datos en
estado
consistente
Fin de Transaccin T1
Begin transaction T
O1
O2
.
.
.
On
Commit T
Oi e conjunto de
operaciones
Caracterizacin de transacciones:
Las acciones de lectura y escritura se utilizan como base para caracterizar a las
transacciones. Los elementos de datos que lee una transaccin se dice que
constituyen el conjunto de lectura (RS). Similarmente, los elementos de
datos que una transaccin escribe se les denomina el conjunto de escritura
(WS). Note que los conjuntos de lectura y escritura no tienen que ser
necesariamente disjuntos. La unin de ambos conjuntos se le conoce como el
conjunto base de la transaccin (BS = RS U WS).
Ejemplo: Los conjuntos de lectura y escritura de la siguiente transaccin:
RS[Reservacin] = { FLIGHT.STSOLD, FLIGHT.CAP }
WS[Reservacin] = { FLIGHT.STSOLD, FC.FNO, FC.DATE, FC.NAME,
FC.SPECIAL }
T2
R(A)
W(A)
R(B)
W(B)
Commit
R(C)
W(C)
Commit
Seriabilidad:
Cualquier ejecucin de un conjunto de transacciones es correcta si es libre
de interferencias.
Una planificacin Serializable es una equivalencia de alguna de las
ejecuciones seriales de las transacciones. Si cada transaccin preserva
consistencia, cada planificacin serializable preserva consistencia.
Conflictos de WR:
T1:
T2:
R(A), W(A),
R(A), W(A), C
Conflictos de WR:
T1:
T2:
R(A),
R(A), W(A), C
R(A), W(A), C
Conflictos de WW:
T1:
T2:
W(A),
W(A), W(B), C
W(B), C
Tipos de Transacciones:
Las transacciones pueden pertenecer a varias clases. Las transacciones pueden
ser agrupadas a lo largo de las siguientes dimensiones:
reas de aplicacin. En primer lugar, las transacciones se pueden ejecutar en
aplicaciones no distribuidas. Las transacciones que operan en datos
distribuidos se les conoce como transacciones distribuidas.
Tiempo de duracin. Tomando en cuenta el tiempo que transcurre desde que se
inicia una transaccin hasta que se realiza un commit o se aborta, las
transacciones pueden ser de tipo batch o en lnea.
Estructura. Considerando la estructura que puede tener una transaccin se
examinan dos aspectos: si una transaccin puede contener a su vez
subtransacciones o el orden de las acciones de lectura y escritura dentro de
una transaccin
T1
read (A)
A := A-50
write (A)
T2
read (A);
temp := A * 0.1
A := A temp
write (A)
read (B)
B := B+50
write (B)
Commit
read (B)
B:=B+temp
write (B)
Commit
Plan Serializable
T2
read_item (X)
X := X+M
write_item (X)
read_item (Y)
Y:= Y+N
write_item (Y)
Commit
write_item (X)
Commit
T2
read_item (X)
X := X+M
write_item (X)
Commit
read_item (Y)
Abort
T3
sum :=0
read_item(A)
sum := sum+A
read_item (X)
X := X-N
write_item (X)
read_item(Y)
Y := Y+N
write_item(Y)
Commit
read_item(X)
sum:=sum+X
read_item(Y)
sum :=sum+Y
Commit