Gestion De Transacciones
Dr. José Luis Zechinelli Martini joseluis.zechinelli@udlap.mx IS - 580
Equipo Tecnologías de Bases de Datos Tecnologí CENTIA - VIPE
Introducción (1)
Sistemas mono-usuario vs. multi-usuarios: sistemas de reservaciones, de bancos, de tarjetas de crédito, de supermercados. Concepto de transacción:
Mecanismo para describir unidades lógicas de procesamiento.Representación lógica de un proceso que debe ser ejecutado por completo para asegurar la coherencia de la información.
Sistemas de procesamiento de transacciones: sistemas con grandes bases de datos y cientos de usuarios concurrentes.
1
Introducción (2)
Una transacción es una unidad lógica de procesamiento en la BD. Formada por una o varias operaciones (inserción, borrado, modificación,recuperación).
Expresada usando un lenguaje de consultas de alto nivel (SQL). Especificada dentro de un programa de aplicación:
Varias transacciones. begin transaction - end transaction.
Realizada sin hacer modificaciones (read-only transaction).
Modelo simplificado (1)
Una BD es una colección de datos nombrados: items. El tamaño de un item define su granularidad: atributo, registro, archivo, disco.Las operaciones que una transacción puede incluir son:
read_item(X): leer un item. write_item(X): escribir un item.
2
Modelo simplificado (2)
Pasos para ejecutar read_item(X):
Encontrar la dirección del bloque en disco que contiene el item X. Copiar el bloque en un buffer en memoria (si no está). Copiar el item X del buffer a la variable del programa.
Pasos para ejecutarwrite_item(X):
Encontrar la dirección del bloque en disco que contiene el item X. Copiar el bloque en un buffer en memoria. Copiar el item X de la variable del programa al buffer. Almacenar el bloque actualizado en disco (inmediato o diferido).
El almacenamiento en disco depende del administrador de recuperaciones y del sistema operativo.
Ejemplos de transacciones
T1: transferencia
read_item(X); X :=X – N; write_item(X); read_item(Y); Y := Y + N; write_item(Y);
T2: depósito
read_item(X); X := X + M; write_item(X);
Mecanismos de control de la concurrencia y recuperación concernidos
3
Control de la concurrencia
Perdida de actualizaciones: acceso concurrente del mismo item provocando que su valor al final de la ejecución quede incoherente. Lectura sucia: actualización de un itempor una transacción que falla leído por otra antes de restablecer su valor original. Resumen incoherente: acceso concurrente de un conjunto de items donde una transacción actualiza todos sus valores y la otra opera tomando la mitad actualizados y la otra mitad no.
Perdida de actualizaciones
T1
read_item(X); X := X – N; read_item(X); X := X + M; write_item(X); read_item(Y); write_item(X); Y :=Y + N; write_item(Y);
T2
Item X tiene un valor incoherente porque la actualización de T1 se perdió
4
Lectura sucia
T1
read_item(X); X := X – N; write_item(X); read_item(X); X := X + M;
T2
T1 falla y debe restaurar el valor de X T2 leyó un valor incorrecto de X
write_item(X); read_item(Y);
Resumen incoherente
T1 T3
sum := 0; read_item(A); sum := sum + A; . . .read_item(X); X := X – N; write_item(X); read_item(X); sum := sum + X; read_item(Y); sum := sum + Y; read_item(Y); Y := Y + N; write_item(Y);
T3 lee X después de ser actualizada y lee Y antes de ser actualizada
5
Recuperación
Evitar tener items en la base de datos afectados por transacciones que fallaron (transacciones incompletas). Tipos de fallas:
Falla de hardware, de software o de red.Error sistema (integer overflow, division by 0 o lógicos). Errores locales o excepciones (data not found). Salida forzada por el controlador de la concurrencia (serializability, deadlock). Fallas de disco (descomposturas físicas de sectores o disco). Problemas físicos y catástrofes (power, fire, sabotaje, etc.).
Plan
Introducción a la gestión de transacciones Conceptos de transacciones...
Regístrate para leer el documento completo.