You are on page 1of 12

CONCURRENCIA

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.
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, Cuenta2) •Leer4(Cuentas[8]) devuelve el valor de $200


begin
Start; •Escribir4(Cuentas[8], $100)
temp1 := Leer(Cuentas[Cuenta1]); •Leer3 (Cuentas[8]) devuelve el valor de $100
output(temp1);
•Leer3 (Cuentas[9]) devuelve el valor de $200
temp2 := Leer(Cuentas[Cuenta2]);
output(temp2); •Leer4 (Cuentas[9]) devuelve el valor de $200
temp1 := temp1 $+$ temp2;
•Escribir4 (Cuentas[9], $300)
output(temp1);
Commit; •Commit4
end •Commit3
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 A Tupla

Bloqueo
Exclusivo

Transacción B DB

Si la transacción A pone un bloqueo exclusivo (X) sobre una tupla,


entonces se rechazará una petición de cualquier otra transacción B
para un bloqueo de cualquier tipo sobre la tupia
Bloqueos
Bloqueo Compartido o de Lectura

Transacciones Base de datos

Tupla

Transacción A
Bloqueo
Compartido

Transacción B
DB
Transacción C
Bloqueo
Exclusivo

Si la transacción A pone un bloqueo compartido (S) sobre la tupla entonces:


Se rechazará una petición de cualquier otra transacción B para un bloqueo Exclusivo sobre
la tupla.
Se otorgará una petición de cualquier otra transacción B para un bloqueo S sobre la tupla
(esto es, ahora también B tendrá un bloqueo S sobre la tupla
NIVELES DE BLOQUEO

• Fila: Fila individual Ficheros y bases de datos


• Clave: Fila de un índice
• Página: Páginas (8KB)
• Extent: Extensión (grupo de 8 páginas
contiguas de datos o índices)
• Table: Tabla completa
• Database: Base de datos completa
MODOS DE BLOQUEO
• Compartido: para operaciones sólo de lectura.
Se permiten lecturas concurrentes, pero ninguna
actualización.
• Actualización: para operaciones que pueden
escribir. Si la transacción modifica datos, se
convierte en exclusivo
• Exclusivo. para operaciones que escriben
datos. Sólo se permite que una transacción
adquiera este bloqueo.
• Intención: se usan para establecer una
jerarquía de bloqueo.

You might also like