Manual Oracle
4.6.1.- Introducción 4.6.2.- Técnicas de Bloqueo.
4.6.2.1.- Bloqueo (variable cerrojo) • Tipos, protocolos • Problemas. Interbloqueo • Granularidad 4.6.2.2.- Marcas de Tiempo • Protocolos • Marcas de Tiempo Multiversion
4.6.- Integridad: Control de concurrencia. 4.6.1.- Introducción (1).
w En sistema multiusuario es imprescindible, un mecanismode control de concurrencia para conservar la integridad de la BD.
n
Todos los datos deben ser iguales para todos los usuarios.
w Cuando se ejecutan varias transacciones simultáneamente pueden producirse estados inconsistentes en la BD:
n
Una transacción bancaria lee un importe y le resta 100 euros y antes de actualizar la BBDD otra transacción lee ese dato.
w ORACLE es una BDmultiusuario. Se necesita
- Concurrencia - Consistencia
Maximización de concurrencia à maximiza productividad y desarrollo
4.6.- Integridad: Control de concurrencia. 4.6.1.- Introducción (2).
w Ejemplo de “problema” de concurrencia:
T1 T2
read(A); A:=A-10;
t
read(A); write(A); A:=A-20; write(A);
Estas dos transacciones simultaneas NO pueden acceder al mismo dato.
OBJETIVO paracontrolar la concurrencia:
Garantizar que las transacciones sean seriables
así, se garantizará la consistencia de las transacciones.
4.6.- Integridad: Control de concurrencia. 4.6.1.- Introducción (3).
w Problemas clásicos de concurrencia:
n n n n
Modificación perdida Modificación temporal Totalización incorrecta Lectura no repetible
w En ORACLE los fenómenos prevenibles son:
n n nLectura sucia Lectura no repetible (borrosa) Lectura fantasma
4.6.- Integridad: Control de concurrencia. 4.6.1.- Introducción (4).
Para prevenir problemas
Técnicas de Control de Concurrencia
–Técnicas Pesimistas (Prevención) •Bloqueos, Marcas de Tiempo,... –Técnicas Optimistas (Corrección) •Técnicas de Validación
ORACLE tiene como soluciones: • Varios tipos de bloqueo • Unmodelo de consistencia multiversión. • Niveles de AISLAMIENTO: • Aceptación de lectura (read commited) • Serializable • Modo de solo lectura (read-only mode)
4.6.- Integridad: Control de concurrencia. 4.6.1.- Introducción (5).
w ORACLE para prevenir interacción destructiva de datos entre usuarios:
n
Consistencia: Asegura que los datos que estamos viendo no cambian (por otros usuarios) hastaque acabemos la transacción Integridad: Asegura que los datos y estructuras reflejan los cambios en una secuencia correcta.
n
4.6.2.- Técnicas de Bloqueo. 4.6.2.1.- Bloqueo. Variable cerrojo (1)
w Un bloqueo, asocia una variable (cerrojo) a cada elemento de datos que describe el estado de dicho elemento, respecto a las posibles operaciones que sobre él se puede realizar. – Identificadordel Elemento bloqueado – Identificador de la Transacción que lo bloquea w Una transacción obtiene un bloqueo solicitándolo al Gestor de Bloqueos. w Un bloqueo es una garantía de ciertos derechos de exclusividad para la Transacción.
4.6.2.- Técnicas de Bloqueo. 4.6.2.1.- Bloqueo. Variable cerrojo (2).
- Bloqueos exclusivos: Un único bloqueo por recurso - Bloqueos Compartidos: Muchos bloqueos porrecurso • ORACLE tiene los dos tipos de bloqueo así como control de consistencia multiversión para asegurar acceso concurrente a los datos. • Un Protocolo de Bloqueo indica cuando una transacción puede bloquear y desbloquear elementos. Si los bloqueos se realizaran de manera arbitraria se podrían producir inconsistencias. • Protocolo de Bloqueo en dos Fases (Two-Phase-Locking) – Fase deCrecimiento: Bloquea pero no Libera – Fase de Encogimiento: Libera pero no Bloquea Asegura la seriabilidad
w Tipos:
4.6.2.- Técnicas de Bloqueo. 4.6.2.1.- Bloqueo. Variable cerrojo (3).
w Problema de Interbloqueo. DEADLOCK (1) ü Dos o más transacciones se quedan a la espera de que se liberen elementos que tiene bloqueados otra.
T1 Bloqueo(A) ................. ................. Bloqueo(B) T2...
Regístrate para leer el documento completo.