Transacciones y Concurrencias
Transacciones y Concurrencias
Transacciones y Concurrencias
Transacciones Y Concurrencias
Integrantes:
Castellanos Carlos 21.024.060
Duran Alirio 21.160.655
Escalona Alinger 21.022.119
Garcia Maritrini 21.160.740
Hernandez Juan 21.023.088
Manzanilla Daniela 21.160.654
Prof. Lennys Camargo
Seccin: 808 Ing. Informatica
Concurrencia:
El control de concurrencia trata con los problemas de aislamiento y consistencia
del procesamiento de transacciones. El control de concurrencia distribuido de una
DDBMS asegura que la consistencia de la base de datos se mantiene en un
ambiente distribuido multiusuario. Si las transacciones son internamente
consistentes, la manera ms simple de lograr este objetivo es ejecutar cada
transaccin sola, una despus de otra. Sin embargo, esto puede afectar
grandemente el desempeo de un DDBMS dado que el nivel de concurrencia se
reduce al mnimo.
El nivel de concurrencia, el nmero de transacciones activas, es probablemente el
parmetro ms importante en sistemas distribuidos. Por lo tanto, los mecanismos
de control de concurrencia buscan encontrar un balance entre el mantenimiento de
la consistencia de la base de datos y el mantenimiento de un alto nivel de
concurrencia.
Si no se hace un adecuado control de concurrencia, se pueden presentar dos
anomalas. En primer lugar, se pueden perder actualizaciones provocando que los
efectos de algunas transacciones no se reflejen en la base de datos. En segundo
trmino, pueden presentarse recuperaciones de informacin inconsistentes.
Correctitud:
Una ejecucin concurrente de un conjunto de transacciones (t1, t2, ..., tn) es
correcta si y slo si existe una secuencia de dichas transacciones que ejecutadas
serialmente daran los mismos resultados. Se dice entonces que si el concepto de
correctitud se cumple el conjunto de transacciones es serializable. Para examinar
la correctitud de la ejecucin concurrente de un conjunto de transacciones hay que
definir la precedencia existente entre las mismas.
Entonces se tiene que una transaccin A precede a una transaccin B si la
transaccin B ve un dato que la transaccin A modific o si la transaccin A ve un
dato que la transaccin B modificar. En el ejemplo anterior se tiene que la
ejecucin concurrente de A y B no es correcta ya que A precede a B porque A ve
un dato que B modificar y al mismo tiempo B precede a A ya que B ve un dato
que A modificar. Entonces no se puede establecer una serializacin posible entre
ambas transacciones. Si ambas transacciones se ejecutan concurrentemente se
obtiene que el valor de F es 8, ya que:
Transaccin A: 4 + 1 = 5
Transaccin B: 4 * 2 = 8
Actualizacin perdida:
Recuperaciones inconsistentes:
Ocurre cuando una transaccin hace un anlisis contable o estadstico, sobre una
tupla que est siendo actualizada por otra transaccin.
Serializabilidad
La serializacin es el criterio de lo correcto, para el control de la concurrencia. Un conjunto
entrelazado de transacciones es correcto si es serializable. Es decir si produce el mismo
resultado mediante la ejecucin en serie de las mismas transacciones. Dado un conjunto
de transacciones entrelazadas, cualquier ejecucin de esas transacciones se dice que es
una calendarizacin (scheduling)
Esta es la ejecucin de esta aseveracin:
1. - Las transacciones individuales son tomadas como correctas es decir, se da por hecho
que transforman un estado correcto de la base de datos en otro estado correcto.
2. - Por lo tanto tambin es correcta la ejecucin de una transaccin a la vez en cualquier
orden serial y se dice en cualquier orden serial debido a que las transacciones
individuales son consideradas independientes entre s.
3. - Por lo tanto una ejecucin intercalada es correcta cuando equivale a una ejecucin
serial, es decir cuando es seriable.
Formas de planificar la serilizabilidad
Por Conflicto
Tipos de Operaciones:
Por Vista
Algoritmo Optimista
Permite que las transacciones procedan como si no hubiese posibilidad de conflicto con
otras transacciones, hasta que el cliente complete su tarea y solicite un EndTransaction
(Commit). Cuando aparece un conflicto se abortar la transaccin.
Las modificaciones/accesos se hacen sobre espacios privados y se lleva registro de los
datos que han sido modificados/accedidos. Al momento del commit, se chequea que los
espacios privados sean vlidos, de no serlos, se aborta la transaccin.
A toda transaccin se le asigna un identificador (orden secuencial ascendente) para llevar
una sucesin de transacciones en el tiempo.
Cada transaccin cumple tres fases:
Trabajo: Todos los reads se ejecutan inmediatamente sobre la ltima versin
comprometida del dato. Los writes crean versiones tentativas. Se mantiene un conjunto
de lectura (datos ledos) y un conjunto de escritura (versiones tentativas de los datos).
Validacin: Ante la solicitud de un commit, se valida si la transaccin realiz operaciones
conflictivas con otras transacciones.
Escritura: Si la transaccin es validada, todos los cambios hechos sobre los espacios
privados son actualizados en las versiones originales.
Desventajas:
Interbloqueo:
Un interbloqueo se produce cuando dos o ms tareas se bloquean entre s
permanentemente teniendo cada tarea un bloqueo en un recurso que las otras
tareas intentan bloquear.
Un interbloqueo es una condicin que se puede dar en cualquier sistema con
varios subprocesos, no slo en un sistema de administracin de bases de datos
relacionales, y puede producirse para recursos distintos a los bloqueos en objetos
de base de datos
Por ejemplo:
La transaccin A tiene un bloqueo compartido de la fila 1.
La transaccin B tiene un bloqueo compartido de la fila 2.
La transaccin A ahora solicita un bloqueo exclusivo de la fila 2 y se
bloquea hasta que la transaccin B finalice y libere el bloqueo compartido
que tiene de la fila 2.
La transaccin B ahora solicita un bloqueo exclusivo de la fila 1 y se
bloquea hasta que la transaccin A finalice y libere el bloqueo compartido
que tiene de la fila 1.
Modificamos un
Ahora si se ejecuta
transaccin
Finalizamos la
transaccin con el
commit