Está en la página 1de 13

INTRODUCCIÓN

 La definición de concurrencia en términos generales es:


  Coincidencia de varios sucesos o cosas a un mismo tiempo

 La concurrencia en las bases de datos :


 Se refiere al hecho de que los Sistemas Administradores de
Base de Datos permiten que muchas transacciones accedan a
una misma Base de Datos a la vez.

 Cuando existen varios usuarios intentando modificar los datos


al mismo tiempo, se necesita establecer algún tipo de control
para que dichas modificaciones de un usuario no interfieran en
las de los otros, a este sistema se le denomina control de
concurrencia.

 Los sistemas de control de concurrencia deben garantizar la


propiedad de aislamiento de transacciones que se ejecutan de
manera concurrente.
DEFINICIÓN DE CONCURRENCIA

 En el campo informático, el termino concurrencia se refiere a la capacidad de los Sistemas


de Administración de Base de Datos (DBMS), de permitir que múltiples procesos sean
ejecutados al mismo tiempo, y que también puedan interactuar entre sí.

 Los procesos concurrentes pueden ser ejecutados realmente de forma simultánea, sólo
cuando cada uno es ejecutado en diferentes procesadores. En cambio, la concurrencia es
simulada si sólo existe un procesador encargado de ejecutar todos los procesos,
simulando la concurrencia, ocupándose de forma alternada de uno y otro proceso a muy
pequeños intervalos de tiempo. De esta manera simula que se están ejecutando a la vez.

 Algunos casos de concurrencia


 La multiprogramación: El procesador es compartido dinámicamente por varios
procesos.
 Aplicaciones estructuradas: Se implementa como un conjunto de procesos
concurrentes.

 También se tiene que la misma estructura recién mencionada es utilizada en el diseño de


los sistemas operativos, los cuales se implementan como un conjunto de procesos.
 Debido a que los procesos concurrentes en un sistema pueden interactuar entre otros
también en ejecución, el número de caminos de ejecución puede ser extremadamente
grande, resultando en un comportamiento sumamente complejo. Las dificultades
asociadas a la concurrencia han sido pensadas para el desarrollo de lenguajes de
programación y conceptos que permitan hacer la concurrencia más manejable.
TRANSACCIONES
 El control de concurrencia permite que sus usuarios asuman
que cada una de sus aplicaciones se ejecuta atómicamente,
como si no existieran otras aplicaciones ejecutándose
concurrentemente. Esta abstracción de una ejecución atómica
y confiable de una aplicación se conoce como una transacción

 Informalmente, una transacción es la ejecución de ciertas


instrucciones que acceden a una base de datos compartida.

 Cada transacción accede a información compartida sin


interferir con otras, si una transacción termina normalmente,
todos sus efectos son permanentes, en caso contrario no tiene
afecto alguno.
 Durante una transacción la base de datos pierde su
consistencia, la que debe restituirse al momento de finalizar la
transacción.
PROPIEDADES FUNDAMENTALES DE UNA TRANSACCIÓN

 Atomicidad: Se refiere al hecho de que una transacción se trata como una unidad de
operación.
 Consistencia: La consistencia de una transacción es simplemente su correctitud; las
transacciones no violan las restricciones de integridad de una base de datos.
 Aislamiento: Una transacción en ejecución no puede revelar sus resultados a otras
transacciones concurrentes antes de finalizar.
 Permanencia: Es la propiedad de las transacciones que asegura que una vez que una
transacción finaliza exitosamente, sus resultados son permanentes y no pueden ser
borrados de la base de datos por alguna falla posterior.  
 En esencia, lo que se persigue con el procesamiento de transacciones es, por una parte
obtener una transparencia adecuada de las acciones concurrentes a una base de datos y
por otra, manejar adecuadamente las fallas que se puedan presentar en una base de
datos.
 El procesamiento de transacciones es una de las tareas más importantes dentro de un
sistema de base de datos, pero a la vez, es una de las más difíciles de manejar debido a
diversos aspectos, tales como:

 Confiabilidad: Puesto que los sistemas de base de datos en línea no pueden fallar.
 Disponibilidad: Debido a que los sistemas de base de datos en línea deben estar
actualizados correctamente todo el tiempo.
 Tiempos de Respuesta: el tiempo de respuesta de las transacciones no debe ser mayor a
doce segundos  
 Throughput: Los sistemas de base de datos en línea requieren procesar miles de
transacciones por segundo. 
 Atomicidad: en el procesamiento de transacciones: No se aceptan resultados parciales.
PROBLEMAS DE CONCURRENCIA

 Existen tres formas en las que una


transacción, aunque sea correcta por sí
misma, puede producir una respuesta
incorrecta si alguna otra transacción
interfiere con ella en alguna forma.

 El problema de la Actualización Perdida


 El problema de la Dependencia No
Confirmada
 El problema del Análisis Inconsistente
Actualización Perdida
Procedure Depositar(Cuenta, Monto)
begin
Start;
temp := Leer(Cuentas[Cuenta]);
temp := temp + Monto;
Escribir(Cuentas[Cuenta],temp);
Commit;
End

 Leer1(Cuentas[7]) devuelve el valor de


$1000
 Leer2(Cuentas[7]) devuelve el valor de
$1000
 Escribir2(Cuentas[7], $101000)
 Commit2
 Escribir1(Cuentas[7], $1100)
 Commit1
Análisis Inconsistente

Procedure ImprimirSuma(Cuenta1,
• Leer4(Cuentas[8]) devuelve el valor de $200
Cuenta2)
begin • Escribir4(Cuentas[8], $100)
Start;
• Leer3 (Cuentas[8]) devuelve el valor de $100
temp1 := Leer(Cuentas[Cuenta1]);
output(temp1); • Leer3 (Cuentas[9]) devuelve el valor de $200
temp2 := Leer(Cuentas[Cuenta2]);
• Leer4 (Cuentas[9]) devuelve el valor de $200
output(temp2);
temp1 := temp1 $+$ temp2; • Escribir4 (Cuentas[9], $300)
output(temp1);
• Commit4
Commit;
end • Commit3
Sincronizador o Serializador
Bloqueos
 La idea básica de un Bloqueo es que
cuando se esta procesando una
transacción, inhibe todas las demás
transacciones
Bloqueos
Bloqueo Exclusivo o de Escritura

Transacciones

Base de datos

Transacción
Transacción A
A Tupla

Bloqueo
Exclusivo

Transacción
Transacción B
B DB

Si
Si la
la transacción
transacción A
A pone
pone un
un bloqueo
bloqueo exclusivo
exclusivo (X)
(X) sobre
sobre una
una tupla,
tupla,
entonces
entonces se rechazará una petición de cualquier otra transacción BB
se rechazará una petición de cualquier otra transacción
para
para un un bloqueo
bloqueo de
de cualquier
cualquier tipo
tipo sobre
sobre la
la tupia
tupia
Bloqueos
Bloqueo Compartido o de Lectura

Transacciones Base de datos

Tupla

Transacción
Transacción A
A
Bloqueo
Compartido

Transacción
Transacción B
B
DB
Transacción
Transacción C
C
Bloqueo
Exclusivo

Si
Si la
la transacción
transacción AA pone
pone un
un bloqueo
bloqueo compartido
compartido (S)(S) sobre
sobre la
la tupla
tupla entonces:
entonces:
Se
Se rechazará
rechazará unauna petición
petición de
de cualquier
cualquier otra
otra transacción
transacción BB para
para un
un bloqueo
bloqueo Exclusivo
Exclusivo sobre
sobre
la
la tupla.
tupla.
Se
Se otorgará
otorgará unauna petición
petición de
de cualquier
cualquier otra
otra transacción
transacción BB para
para un un bloqueo
bloqueo SS sobre
sobre la
la tupla
tupla
(esto es, ahora también B tendrá un bloqueo S sobre la
(esto es, ahora también B tendrá un bloqueo S sobre la tupla tupla
Bloqueos
Matriz de Compatibilidad

Transacción
TransacciónAA
TransacciónBB XX SS --
XX No
No No
No Si
Si
Transacción

SS No
No Si
Si Si
Si
Si
Si
-- No
No Si
Si Si
Si

X
X Bloqueo
Bloqueo Exclusivo
Exclusivo
S
S Bloqueo
Bloqueo Compartido
Compartido

También podría gustarte