Está en la página 1de 23

Semana

 06

Gestión  de  transacciones

Gestión de transacciones
• Soporte  de  Transacciones
– Conceptos
– Propiedades
– Estados
• Control  de  concurrencia  
• Recuperación  de  la  base  de  datos
Gestión de transacciones
• Soporte  de  Transacciones
–Conceptos
– Propiedades
– Estados
• Control  de  concurrencia  
• Recuperación  de  la  base  de  datos

Qué es una transacción?


Qué  es  una  transacción?
• Definición
Conjunto  de  operaciones  de  base  de  datos  que  se  
ejecutan  como  una  sola  unidad  lógica  de  trabajo.

• Ejemplo
transferencia  de  fondos  de  una  cuenta  corriente  a  
una  cuenta  de  ahorros

begin transaction
...
consistencia de
varias operaciones
la base de datos
...
end transaction
Qué  es  una  transacción?
Ejemplo: transferencia de $50 de una cuenta A hacia una
cuenta B
Antes Transacción Después
begin  transaction
read(A)
A:=  A  -­‐ 50
A=1000 A=950
write(A)
B=2000 B=2050
TOTAL=3000
read(B) TOTAL=3000
B:=  B  +  50
write(B);
end  transaction

Qué  es  una  transacción?


operaciones  de  acceso  a  la  base  de  datos
• read(X)
X buffer
local
• write(X)
buffer X
local
• transferencia  de  $50  de  una  cuenta  A  hacia  una  cuenta  B
Ti:read(A);
A:= A - 50;
write(A);
read(B);
B:= B + 50;
write(B);
Qué  es  una  transacción?
otras  definiciones
• Se  llama  transacción  a  una  colección  de  
operaciones  que  forman  una  unidad  lógica  de  
trabajo.
• Una  transacción  es  una  secuencia  de  
operaciones  que  llevan  la  base  de  datos  desde  
un  estado  de  consistencia    a  otro,  por  esto  
suele  decirse  también  que  la  transacción  es  
una  unidad  lógica  de  integridad.

Gestión de transacciones
• Soporte  de  Transacciones
– Conceptos
–Propiedades
– Estados
• Control  de  concurrencia  
• Recuperación  de  la  base  de  datos
Propiedades  ACID
• En  bases  de  datos,  toda  transacción  cumple  
con  4  propiedades:
1. Atomicity (Atomicidad)
2. Consistency (Consistencia)
3. Isolation (Aislamiento)
4. Durability (Durabilidad)

Propiedades  ACID
Atomicidad
• Una  transacción  es  un  unidad  de  trabajo  
indivisible
• Por  tanto,  todas  las  operaciones  de  la  
transacción  son  ejecutadas  completamente  o  
ninguna
• El  ejecutar  solo  un  subconjunto  de  
operaciones,  contradice  el  objetivo  de  una  
transacción
Propiedades  ACID
Consistencia
• Una  transacción  es  una  unidad  de  integridad
• Por  tanto, la  ejecución  de  una  transacción  
debe  preservar  la  consistencia  de  los  datos
• En  el  ejemplo  de  la  transferencia  bancaria:  
A+B  debe  permanecer  invariable  después  de  
la  ejecución  de  la  transacción

Propiedades  ACID
Aislamiento
• Una  transacción  es  una  unidad  de  aislamiento
• Implica  que  la  ejecución  de  una  transacción  
no  debe  afectar  la  ejecución  de  otras
• Permite  la  ejecución  concurrente  de  
transacciones,  sin  el  riesgo  de  que  las  
operaciones  de  una  transacción  afecte  el  
resultado  de  otra  (secuencialidad)
Propiedades  ACID
Durabilidad
• Una  transacción  es  una  unidad  de  
recuperación
• Si  una  transacción  culmina  exitosamente  el  
DBMS  debe  garantizar  que  los  cambios  sean  
permanentes.
• Aun  cuando  el  equipo  falle  luego  de  finalizada  
la  transacción;  al  reiniciar  los  cambios  deben  
estar  reflejados  íntegramente.

Gestión de transacciones
• Soporte  de  Transacciones
– Conceptos
– Propiedades
–Estados
• Control  de  concurrencia  
• Recuperación  de  la  base  de  datos
Estados  de  una  transacción

Parcialmente
confirmada
confirmada

activa terminada

fallida abortada

Estados  de  una  transacción


• activa
– estado  inicial
– la  transacción  permanece  en  este  estado  mientras  
está  ejecutándose
• parcialmente  confirmada
– después  que  la  última  instrucción  de  la  transacción  
ha  sido  ejecutada
• fallida
– después  de  descubrir  que  la  ejecución  normal  no  
puede  proseguir
Estados  de  una  transacción
• abortada
– después  que  la  transacción  ha  sido  “deshecha” y  
la  base  de  datos  es  restaurada  a  un  estado  
anterior  al  inicio  de  la  transacción
• reiniciar  la  transacción
• suprimir  la  transacción

• confirmada
– después  de  haber  completado  exitosamente  la  
transacción

Gestión de transacciones
• Soporte  de  Transacciones
– Conceptos
– Propiedades
– Estados

• Control  de  concurrencia  


• Recuperación  de  la  base  de  datos
EJECUCIONES  CONCURRENTES

El riesgo de la ejecución concurrente de transacciones


control  de  concurrencia
ejecuciones  concurrentes  ...
• ejecución  concurrente  de  múltiples  
transacciones

• concurrencia para  las  transacciones,  


multiprogramación para  el  sistema  
operativo

control  de  concurrencia


...  ejecuciones  concurrentes  ...
• ventajas
– incremento  de  la  utilización  del  procesador  y  del  disco
– reducción  del  tiempo  promedio  de  respuesta para  la  
transacciones

• esquemas  de  control  de  concurrencia


mecanismos  para  controlar  la  interacción  entre  las  
transacciones  concurrentes  para  prevenir  la  
destrucción  de  la  consistencia  de  la  base  de  datos
control  de  concurrencia
...  ejecuciones  concurrentes  ...
• Planificaciones
secuencias  que  indican  el  orden  cronológico  en  el  cual  
las  instrucciones  de  las  transacciones  concurrentes  son  
ejecutadas

• Planificaciones  de  un  conjunto  de  


transacciones
– compuesto  de  todas  las  instrucciones  de  las  
transacciones
– debe  preservar  el  orden  en  el  que  las  instrucciones  
aparecen  en  cada  transacción  individual

control  de  concurrencia


...  ejecuciones  concurrentes
• ejemplo  de  planificación
T1 transfiere  $50  de  A  a  B,  y  T2 transfiere  10%  del  saldo  
(balance)  de  A  a  B.

T1: read(A); T2: read(A);


A := A–50; temp := A*0.1;
write(A); A := A–temp;
read(B); write(A);
B := B+50; read(B);
write(B). B := B+temp;
write(B).
control  de  concurrencia  
planificación  1:  planificación  secuencial
T1 T2
read(A);
A := A–50;
write(A);
A = 1000 read(B); A = 855
B = 2000 B := B+50; B = 2145
write(B).
read(A);
temp := A*0.1;
A := A–temp;
write(A);
read(B);
B := B+temp;
write(B).

control  de  concurrencia  


planificación  2:  planificación  secuencial
T1 T2
read(A);
temp := A*0.1;
A := A–temp;
A = 1000 write(A); A = 850
B = 2000 read(B); B = 2150
B := B+temp;
write(B)
read(A);
A := A–50;
write(A);
read(B);
B := B+50;
write(B)
control  de  concurrencia  
planificación  3:  planificación  secuenciable
T1 T2
read(A);
A := A–50;
write(A);
A = 1000 read(A); A = 855
B = 2000 temp := A*0.1; B = 2145
A := A–temp;
write(A);
read(B);
B := B+50; estado
write(B).
read(B);
consistente
B := B+temp;
write(B).

control  de  concurrencia  


planificación  4:  planificación  no  secuenciable
T1 T2
read(A);
A := A–50;
read(A);
A = 1000 temp := A*0.1; A = 950
B = 2000 A := A–temp; B = 2100
write(A);
read(B);
write(A);
read(B);
estado
B := B+50; inconsistente
write(B).
B := B+temp;
write(B).
control de concurrencia
planificaciones equivalentes
v Dos planificaciones son equivalentes si ambas
llevan a la base de datos desde un mismo estado
inicial a mismo estado final
v Una planificación secuenciable es equivalente a
una planificación secuencial
v Por tanto, si una planificación secuencial lleva a
la base de datos de un estado consistente a otro,
la planificación secuenciable también lo hará

control  de  concurrencia


• sistema  operativo
– varias  planificaciones son  posibles,  
incluyendo  estados  inconsistentes

• SGBD
❏obligación  de  dejar  la  base  de  datos  en  
un  estado  consistente
❏Componente  de  control  de  concurrencia
control  de  concurrencia
secuencialidad
• La  secuencialidad  es  la  propiedad  que  
una  planificación  concurrente  debe  
cumplir  con  el  fin  de  asegurar  la  
consistencia  de  los  datos,  debiendo  
ser  equivalente  a  una  planificación  
secuencial.

control  de  concurrencia


secuencialidad
• Existen  dos  formas  de  secuencialidad:
– Secuencialidad  en  cuanto  a  conflictos
– Secuencialidad  en  cuanto  a  vistas
control  de  concurrencia
secuencialidad  en  cuanto  a  conflictos
• S:  planificación  secuencial
• Ii,  Im:  instrucciones
• Ti,  Tm:  transacciones
• i£m
• Si  Ii e  Im hacen  referencia  a  datos  diferentes,  
entonces  es  posible  intercambiar  Ii e  Im sin  afectar  el  
resultado
• Si  Ii e  Im hacen  referencia  al  mismo  dato Q,  entonces  
el  orden  de  estas  instrucciones  puede  importar

control  de  concurrencia


secuencialidad  en  cuanto  a  conflictos
casos:
1. Ii = read(Q), Im = read(Q)
el  orden  de  Ii e  Im no  importa

2. Ii = read(Q), Im = write(Q)
Si  Ii antecede  a  Im,  entonces  Ti no  lee  el  valor  de  
Q escrito  por  Tm en  la  instrucción  Im
Si  Im antecede  a  Ii,  entonces  Ti lee  el  valor  de  Q
escrito  por  Tm en  la  instrucción  Im
Por  lo  tanto,  el  orden  importa
control  de  concurrencia
secuencialidad  en  cuanto  a  conflictos

3. Ii = write(Q), Im = read(Q)
el  orden  de  Ii e  Im importa  por  las  mismas  
razones  que  el  caso  anterior

4. Ii = write(Q), Im = write(Q)
si  importa  el  orden  porque  afecta  al  resultado  
final  de  Q

control  de  concurrencia


secuencialidad  en  cuanto  a  conflictos
• conflicto  entre  Ii and  Ij
– Si  son  operaciones  consecutivas  de  
diferentes  transacciones  sobre  el  mismo  
elemento  de  dato  y  al  menos  una  de  
estas  instrucciones  es  una  operación  de  
escritura
control  de  concurrencia
secuencialidad  en  cuanto  a  conflictos
• supongamos    que  Ii y  Im son  instrucciones  
consecutivas  de  la  planificación  S.
• si  Ii e  Im son  instrucciones  de  diferentes    
transacciones  y  no  hay  conflicto  entre  ellas,  
entonces  podemos  intercambiar  el  orden  de    Ii
e  Im para  obtener  una  nueva  planificación  S´
• Se  puede  decir  que  S  es  equivalente  a  S´
dado  que  todas  las  instrucciones  aparecen  en  
el  mismo  orden  en  ambas  planificaciones  
excepto  para  Ii e  Im,  cuyo  orden  no  tiene  
importancia

control  de  concurrencia


secuencialidad  en  cuanto  a  conflictos
T1 T2

read(A)
write(A)
read(B)
write(B)
read(A)
write(A
read(B)
write(B)
Planificación S
(secuencial)
control  de  concurrencia
secuencialidad  en  cuanto  a  conflictos
T1 T2
read(A);
write(A);
read(A);
write(A);
read(B);
write(B).
read(B);
write(B).

Planificación S’
(secuenciable en términos de conflictos)

control  de  concurrencia


secuencialidad  en  cuanto  a  vistas
a) Si la transacción Ti lee el valor inicial de Q en S,
debería hacerlo en S’.
b) Si la transacción Ti ejecuta leer(Q) y el valor lo
ha producido en S la transacción Tj (si hay),
debería pasar lo mismo en S’.
c) La transacción (si hay) que realice la última
operación escribir(Q) en S debería hacerlo en S’.
control  de  concurrencia
secuencialidad  en  cuanto  a  vistas
T1 T2 T3

write(B)
leer(A)
write(A)
read(B)
write(B)
write(A)
read(B)
write(A)
Planificación secuencial

control  de  concurrencia


secuencialidad  en  cuanto  a  vistas
T1 T2 T3

write(B)
read(B)
write(B)
read(B)
read(A)
write(A)
write(A)
write(A)
Planificación secuenciable en cuanto a vistas
Tecnologías  avanzadas  de  la  Web  y  SBC
Departamento  de  Ciencias  de  la  Computación  y  Electrónica

aeencalada@utpl.edu.ec
aeromero2@utpl.edu.ec
jcmorocho@utpl.edu.ec

UTPL  -­‐ 2018

También podría gustarte