Al CONACYT por apoyarme con la beca de maestría y al CINVESTAV en general.
2
ÍNDICE GENERAL
Resumen
Imaginemos que tenemos un grupo de transacciones tal que cada transacción está esperando
que otra transacción del mismo grupo libere un recurso compartido. A esta situación se le denomina
candado mortal; este problema se puede tratar de diferentes formas: la detección, el análisis y la
recuperación [6].
Para la detección se trabajará con redes de Petri para modelar y describir gráficamente el
comportamiento de un grupo de "n"transacciones que estén compitiendo por un recurso compartido
en la base de datos. El grafico generado se analizará para determinar si algunas transacciones se
encuentran esperando a que se libere un recurso o, a que una transacción finalice.
Si se detecta un candado mortal, se tendrá que brindar los recursos que necesita a una transac-
ción para que termine su ejecución, dejando bloqueadas las demás transacciones; al terminar la
primera transacción se debe poner en ejecución a las restantes.
En la fase de recuperación se tiene que estar en constante revisión el comportamiento general
de las transacciones y los recursos de la base de datos; con la finalidad de generar otro grafico y
realizar el análisis de detección, en este caso se tendrá que bloquear la ejecución de una y liberar
los recursos que esté utilizando.
Para esta tesis se trabajo con un conjunto de transacciones que se deseen poner en ejecución
concurrentemente. Con la finalidad de evitar candados mortales. Si se detecta que este conjunto de
transacciones tienen conflictos se optará por reiniciar una transacción.
4
ÍNDICE GENERAL
Abstract
In this thesis, we focus on database transaction deadlock detection. Transaction dependencies
are modeled with Petri nets, then deadlocks of transactions are detected based on the Petri net
model. The main results are:
1. Analyze dependency relation between database transactions.
2. Model transaction dependencies with Petri nets. A set of transactions can be converted into
a Petri net model. A conversion algorithm is developed.
3. Use the incidence matrix techniques of Petri net model to detect deadlock. A deadlock
detection algorithm is developed.
4. Implementation of TRANSimul (TRANSaction Simulation).
4.1 TRANSimul interface design and implementation
4.2 implementation of the conversion algorithm
4.3 implementation of the deadlock detection algorithm
4.4 Experiments on TRANSimul with different examples
6
ÍNDICE GENERAL
Capítulo 1
Introducción
Una colección de varias operaciones (consultas, actualizaciones, etc.) en una base de datos
son llamadas transacciones. La base de datos debe asegurar que los datos sean íntegros y que las
transacciones se ejecuten satisfactoriamente. Para esto las transacciones deben tener las siguientes
propiedades: [2]
Atomicidad: Se deben ejecutar todas las operaciones de la transacción o ninguna.
Consistencia: La ejecución de una instrucción es aislada y preserva la consistencia en la base
de datos.
Aislamiento: Varias transacciones se pueden ejecutar concurrentemente; el sistema debe
garantizar que todas se ejecuten satisfactoriamente.
Durabilidad: Después que una transacción termine satisfactoriamente, los cambios hechos
por ésta deben persistir en la base de datos.
La transacción en una base de datos está compuesta por dos operaciones:
leer(x), se transfiere el dato x de la base de datos a un almacenamiento local (buffer) para la
operación leer.
escribir(x ), se transfiere el dato x del buffer local para escribirlos en la base de datos.
8
Introducción
Usualmente los sistemas de base de datos permiten múltiples transacciones, es decir, que se
pueden ejecutar concurrentemente. Esto nos brinda mayor eficiencia pero, si no se controla ade-
cuadamente, puede causar problemas en la consistencia de los datos. Cuando un grupo de transac-
ciones se van a ejecutar, es necesario generar un
Links de descarga
http://lwp-l.com/pdf4534
Comentarios de: Detección de Candados Mortales en Base de Datos utilizando Redes de Petri (0)
Comentarios de: Detección de Candados Mortales en Base de Datos utilizando Redes de Petri (0)
No hay comentarios