Monografias.com > Uncategorized
Descargar Imprimir Comentar Ver trabajos relacionados

Transacciones, recuperación y control de concurrencia (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

Técnicas de bloqueo (lock)
A cada elemento de datos o gránulo X de la BD se le asocia una variable
operación lock_exclusivo(X): deja bloqueado al que lo pide si otro ya tiene cualquier lock sobre X
operación lock_compartido(X): deja bloqueado al que lo pide si otro ya tiene un lock exclusivo sobre X
operación unlock(X): libera su lock sobre X
Antes de leer X ? lock_compartido(X)
Antes de escribir (leer) X ? lock_exclusivo(X)
Si no se va a leer o escribir más ? unlock(X)

Monografias.com

Protocolo deBloqueo en dos fases
Una transacción sigue el protocolo de bloqueo en dos fases si nunca hace un lock después de haber hecho algún unlock.
Fase de crecimiento: se solicitan locks
Fase de devolución: se realizan unlocks
Solamente este protocolo de bloqueo garantiza la serializabilidad de transacciones
Sin embargo, existe riesgo de deadlock !!
Prevención de deadlocks
Detección y recuperación de deadlocks

Monografias.com

Deadlocks
Deadlock (o abrazo mortal o interbloqueo): cuando una transacción T1 está bloqueada esperando a que otra T2 libere un lock, la cual también está bloqueada esperando a que T1 libere uno de sus lock. Se puede generalizar para N transacciones.
Prevención de deadlocks
Cada transacción obtiene todos los locks al principio y si no puede entonces no obtiene ninguno. Problema de livelock (inanición de algunas transacciones que pueden no obtener todos los que necesiten)
Los elementos de la BD están ordenados de alguna manera y los lock hay que obtenerlos en dicho orden. Los programadores deben controlarlo !!
Detección y recuperación de deadlocks.
A medida que se piden y conceden los lock se construye un grafo de las transacciones que están esperando a otras. Si existe un ciclo en dicho grafo: deadlock. Hay que proceder a abortar a alguna de las transacciones. Problema de livelock si se aborta siempre a la misma!

Monografias.com

Técnicas de marcas de tiempo (time-stamping)
Un timestamp es un identificador asignado a cada transacción TS(T). Indica la hora de comienzo de la transacción T. A cada elemento X de la BD se le asigna el timestamp de la última transacción que lo ha leído (TS_lect(X)) y escrito (TS_escr(X))
Si una transacción T quiere escribir en X
si TS_lect(X) > TS(T) entonces abortar
si TS_escr(X) > TS(T) entonces no escribir y seguir
en otro caso escribir y TS_escr(X):=TS(T)
Una transacción T quiere leer de X
si TS_escr(X) > TS(T) entonces abortar
si TS_escr(X) < = TS(T) entonces leer de X y TS_lect(X):=máximo(TS(T),TS_lect(X))
Garantiza serializabilidad y ausencia de deadlocks. Puede haber livelock (si se aborta siempre a la misma transacción)

Monografias.com

Técnicas optimistas
No se realizan comprobaciones ANTES de ejecutar las operaciones (pedir locks, comprobar timestamps), sino al acabar toda la transacción (fase validación)
Durante la ejecución de la transacción se trabaja con copias
Hay tres fases en un protocolo optimista:
Fase de lectura
Fase de validación
Fase de escritura
Es bueno cuando no hay muchas interferencias entre transacciones (por eso son “optimistas”)

Monografias.com

Recuperación en Oracle
Redo logs (cíclicos)
Archive logs (consolidación de redo logs)
Backups
Mirrors
Export: Incremental, acumulativo (colección de incrementales), total
Recuperación basada en cambios, tiempo, paso-a-paso (basado en archive logs), completa

Monografias.com

Control de concurrencia en ORACLE (1)
Lectura consistente: garantiza que se lean los datos tal y como estaban al inicio de la transacción, sin impedir que otras transacciones los cambien.
Implícitamente con SELECT .. FROM T,R … (lo garantiza sobre las tuplas de T,R,…)
Explícitamente con SET TRANSACTION READ ONLY; (lo garantiza sobre las tuplas de todas las tablas hasta el fin de transacción.)
Debe ser la primera instrucción de la transacción
No permitirá hacer ningún INSERT, DELETE o UPDATE en dicha transacción

Monografias.com

Control de concurrencia en ORACLE (2)
LOCKs
Explícitamente con LOCK TABLE T IN x MODE
x indica si sobre todas/algunas tuplas de T en modo compartido/exclusivo)
Implícitamente con cada operación (según cláusula WHERE)
UPDATE, DELETE, INSERT. Se bloquean las tuplas insertadas, borradas o actualizadas (al ser una transacción no finalizada)
SELECT…FROM T FOR UPDATE OF atr. Se bloquean las tuplas seleccionadas

Monografias.com

Control de concurrencia en ORACLE (y 3)
No hay UNLOCK explícitos en ORACLE!!
Se realiza un UNLOCK implícito de todos los LOCK con cada COMMIT o ROLLBACK (implícitos o explícitos)
Pregunta: ¿Cómo conseguir que las transacciones en ORACLE sigan el protocolo en dos fases, o lo que es lo mismo, sean serializables?

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter