resumen tema 5: proceso de transacciones · propiedades acid • atomicity: las transacciones son...

6
Resumen Tema 5: Proceso de transacciones Transacción Unidad lógica de procesamiento secuencial compuesta por una o mas acciones que se ejecutan en bloque sobre una BD. Sentencias: Begin/end transaction. Commit: hace permanentes los cambios. Rollback: aborta la transacción y deshace los cambios. Propiedades ACID Atomicity: las transacciones son atómicas (o se ejecutan todas las instrucciones, o ninguna). Consistency: tras ejecutar la transacción, se debe conservar la consistencia de la BD. Isolation: una transacción debe estar aislada de las demás transacciones (sus operaciones no deben verse afectadas por otras). Durability: los efectos de la transacción deben permanecer en la DB al finalizar completamente su ejecución. Control de concurrencia Posibles errores derivados de un mal control de la concurrencia: Perdida de operaciones: Lectura sucia: Imposibilidad de reproducir lecturas: Resumen incorrecto

Upload: phamnhu

Post on 01-Oct-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Resumen Tema 5: Proceso de transaccionesTransacción Unidad lógica de procesamiento secuencial compuesta por una o mas acciones que se ejecutan en bloque sobre una BD. Sentencias:

• Begin/end transaction. • Commit: hace permanentes los cambios. • Rollback: aborta la transacción y deshace los cambios.

Propiedades ACID • Atomicity: las transacciones son atómicas (o se ejecutan todas las instrucciones, o ninguna). • Consistency: tras ejecutar la transacción, se debe conservar la consistencia de la BD. • Isolation: una transacción debe estar aislada de las demás transacciones (sus operaciones no

deben verse afectadas por otras). • Durability: los efectos de la transacción deben permanecer en la DB al finalizar completamente su

ejecución.

Control de concurrencia Posibles errores derivados de un mal control de la concurrencia: Perdida de operaciones: Lectura sucia:

Imposibilidad de reproducir lecturas: Resumen incorrecto

Planes y recuperabilidad Plan: secuencia de operaciones realizadas por un conjunto de transacciones concurrentes, que preserva el orden de las operaciones en cada transacción individual. Tipos de plan:

• Plan serie: planificación en la que las operaciones de cada transacción se ejecutan consecutivamente sin entrelazarse con las de otras transacciones. Evita conflictos por concurrencia:

• Plan no serie: planificación en la que las operaciones de un conjunto de transacciones concurrentes están entrelazadas. Pueden producirse conflictos por concurrencia:

Se debe tratar de conseguir un plan serializable, es decir, uno que produzca el mismo resultado en cualquier sucesión de las n transacciones del plan, condición suficiente para garantizar la ausencia de conflicto en planes no serie. Para conseguirlo, deben aplicarse técnicas de control de la concurrencia.

Enfoques para el control de la concurrencia: • Pesimista: asumen la existencia de conflictos, tomando las medidas necesarias durante la

ejecución, aumentando el tiempo. Algunas técnicas comunes son las marcas temporales o los bloqueos.

• Optimista: asumen la no existencia de conflictos, y de haberlos, se resuelven al finalizar la ejecución de las transacciones.

Bloqueos Tienen como objetivo permitir únicamente la ejecución simultánea de operaciones compatibles, evitando las ejecuciones incorrectas. Modo de operación: clase que caracteriza la operación, sirve para determinar compatibilidades entre operaciones. Los modos clásicos son lectura y escritura.

Protocolo de bloqueo: protocolo que indica el acceso a un gránulo (unidad individual de datos), que puede llegar a ser compartido. Está caracterizado por la petición de autorización para realizar una operación, y las señales que indican la finalización de la operación. Un protocolo necesita conocer el comienzo, los modos de operación, y el final. Primitivas asociadas a un protocolo: LOCK(gránulo, modo) y UNLOCK(gránulo)

Algoritmos de bloqueo: Controlan que sobre un gránulo solo se ejecuten operaciones compatibles. Necesitan como información el gránulo, los modos de las operaciones asignadas, y los modos de las operaciones solicitadas. Para determinar las compatibilidades entre modos de operación, se utiliza una matriz de compatibilidades:

Protocolos de bloqueo en dos fases: bloquean todos los gránulos, ejecutan las operaciones, y los desbloquean. Este tipo de protocolos limitan la concurrencia, al realizar bloqueos tempranos y liberaciones tardías. Pueden tener variaciones:

• Bloqueo clásico. • Bloqueo conservativo o estático: bloquea antes de comenzar. • Bloqueo estricto: desbloquea después de terminar totalmente.

Toda ejecución completa de un conjunto de transacciones con bloqueo en dos fases es serializable.

Problemas de los bloqueos: • Interbloqueo (deadlock). • Espera indefinida (livelock): una transacción no entra mientras exista otra. • Hambruna (starvation): el controlador mata siempre la misma transacción para resolver un

interbloqueo.

Matriz de compatibilidad para lectura y escritura

Matriz de compatibilidad con modos extendidos

Interbloqueo Imposibilidad de realizar simultáneamente dos operaciones no compatibles sobre el mismo gránulo, que tiene como consecuencia que dos o mas transacciones quedan en espera del mismo recurso. La finalización de otras transacciones no supone una solución.

Grafo de espera:

• Los nodos representan transacciones concurrentes. • Los arcos representan la relación “espera a”, que ocurre si una transacción espera por un gránulo

que tiene bloqueada otra transacción. • Existe interbloqueo si y solo si el grafo tiene un camino cerrado.

Grafo de asignaciones:

• Los nodos representan transacciones y gránulos. • Los arcos continuos van de un gránulo a una transacción, y representan que la

transacción ha obtenido el bloqueo del gránulo en al menos un modo de operación. • Los arcos discontinuos van de una transacción a un gránulo, y representan que la

transacción ha solicitado el bloqueo de ese gránulo.

Gestión de concurrencia Algoritmos de control de accesos:

• De ordenamiento inicial. • De bloqueo. • Optimistas.

Importancia de la granularidad: compromiso entre gestión y esperas. Gestión de las colas de transacciones: decidir a que transacción hay que dar mayor prioridad. Auditorías al monitor de transacciones.

Transacciones en SQL Modos de transacción:

• Confirmación automática: cada instrucción individual es una transacción. • Explícita: BEGIN, COMMIT, ROLLBACK • Implícita: se inicia implícitamente cuando se ha completado la transacción anterior, y finaliza con

COMMIT WORK, ROLLBACK WORK, o con inicio de sesión.

Niveles de aislamiento (isolation): • Lectura no confirmada: una transacción puede ver cambios realizados por otra aun no

cometida. (problema de lectura sucia). No la soportan muchos SGBD. • Lectura confirmada: una transacción puede ver cambios realizados por otras ya cometidas

(problema de lectura no repetible). • Lectura repetible: si se ejecuta un SELECT dentro de la transacción, se obtienen las filas que

pueda insertar otra transacción, entre dos ejecuciones del mismo SELECT (problema de filas fantasmas).

• Serializable: si se ejecuta un mismo SELECT varias veces en una transacción, siempre se obtiene el mismo resultado.

En SQL:

• Existe interbloqueo si y solo si el grafo de asignaciones presenta un camino cerrado (condición necesaria pero no suficiente).

En Oracle: