Está en la página 1de 15

CONCURRENCIA

EN BASES DE
DATOS
Estados de una Transacción

Fallida:
- Reiniciar, por fallo de hardware o software
- Cancelar, error lógico
PLAN: Ejecución de varias transacciones
SERIAL: Si solamente se ejecuta una transacción
Estados de una Transacción
¿Cómo implementamos la propiedad
Atomicidad y Durabilidad?
Utilizando la Técnica de “Copia en la
Sombra” de la BD
Se asume que sólo una transacción está
activa en cada momento. El esquema
asume que la base de datos es
simplemente un archivo en disco. En
disco se mantiene un puntero
llamado puntero_bd que apunta a la
copia actual de la base de datos.
CONCURRENCIA DE
TRANSACCIONES
“ ▸ Los sistemas de procesamiento de transacciones permiten normalmente la
ejecución de varias transacciones concurrentemente. Permitir varias
transacciones que actualizan concurrentemente los datos provoca
complicaciones en la consistencia de los mismos.
▸ Lo ideal sería que las transacciones se ejecutaran de forma secuencial (en
serie).
▸ Pero al volverlas Concurrentes, tenemos estas ventajas:
▹ Productividad y utilización de recursos mejoradas
▹ Tiempo de espera reducido

4
PROBLEMAS DE CONCURRENCIA
Administración de transacciones
Mecanismo para controlar que varias transacciones se ejecuten al
mismo tiempo

PROBLEMAS DE CONCURRENCIA
1. Actualización Perdida
2. Dependencia no confirmada

Ocurre prácticamente cuando una transacción queda en un estado de


ESPERA (sin COMMIT o ROLLBACK)

3. Análisis Inconsistente
Ocurre al utilizar registros en distinto estado de actualización.

La forma de solución de este problema es llevar las transacciones a un Bloqueo.


Control de Concurrencia
Una de las propiedades fundamentales de las transacciones es el
aislamiento.
Es necesario que el sistema controle la interacción entre las transacciones
concurrentes; dicho control se lleva a cabo a través de uno de los muchos
mecanismos existentes llamado esquemas de control de concurrencia

1. Protocolos basados en Bloqueo


2. Protocolos basados en Marcas Temporales
3. Protocolos basados en Validación
Protocolos basados en Bloqueo
▸ Exclusión mutua: mientras una transacción accede a un elemento de datos, ninguna otra
transacción puede modificar dicho elemento.
▸ Cuando una transacción debe asegurarse de que algún objeto en el que está interesada —por lo
general, una tupla de base de datos— no cambiará de ninguna forma mientras lo esté usando,
adquiere un bloqueo sobre ese objeto.
▸ Tipos de Bloqueos:
▹ 1. Compartido
▹ Si una transacción Ti obtiene un bloqueo en modo compartido (denotado por C)
sobre el elemento Q, entonces Ti puede leer Q pero no lo puede escribir.
▹ 2. Exclusivo
▹ Si una transacción Ti obtiene un bloqueo en modo exclusivo (denotado por X) sobre
el elemento Q, entonces Ti puede tanto leer como escribir Q.
8
Protocolos basados en Bloqueo
▸ Matriz de compatibilidad para los tipos de
bloqueo

No = Significa conflicto
Si = Compatibilidad
 
X y X = Bloqueo Mortal

▸ Forma de funcionamiento
▹ Bloqueo Exclusivo/escritura (X)
▹ Bloqueo Compartido/lectura (S)
9
Bloqueo Mortal
▸ El bloqueo mortal es una situación en la que dos o más transacciones se encuentran en estados
simultáneos de espera, cada una de ellas esperando que alguna de las demás libere un bloqueo para
poder continuar.

▸ Si ocurre un bloqueo mortal es


preferible que el sistema lo detecte y
lo rompa.
▸ Recomendación: Los DBMS
devuelven una excepción de
“Victima de bloqueo mortal” hacia la
app.
El Programador debe manejar la
situación para ocultar al Usuario Final que
“algo” ocurrió en la BD.
10
▸ INTRODUCCION A PL-SQL

“ ▸

PL-SQL (Procedural Language/Structured Query Language)
Lenguajes de Procesamiento Procedimental en SQL

▸ PL-SQL  Oracle
▸ T-SQL  SQL Server, Sybase
▸ PL/pgSQL  PostgreSQL

▸ Permite:
▸ Estructuras modulares, estructuras de control y toma de decisiones, control de
excepciones 11
PROCEDIMIENTOS
ALMACENADOS
Los procedimientos tienen la utilidad de fomentar la reutilización de
programas que se usan comúnmente. Una vez compilado, queda
almacenado en la base de datos y puede ser utilizado por múltiples
aplicaciones.

CREATE [OR REPLACE] PROCEDURE nombre_procedimiento


[nombre_parametro modo tipodatos_parametro ]
IS | AS
bloque de código
FUNCIONES
Una función es un bloque de código PL/SQL que tiene las mismas
características que un procedimiento almacenado. La diferencia estriba
que una función devuelve un valor al retornar. Al devolver un valor
puede ser llamada como parte de una expresión.

CREATE [OR REPLACE] FUNCTION nombre_función


[nombre_parámetro modo tipodatos_parametro ]
RETURN tipodatos_retorno IS | AS
bloque de código
TRIGGERS
Un trigger o disparador se ejecuta ante un determinado evento de manera
automática.
Se debe tener cuidado con este tipo de estructuras puesto que un uso excesivo
puede dar lugar a dependencias difíciles de mantener.
CREATE [OR REPLACE] TRIGGER nombre_trigger
momento_ejecución evento [evento] ON nombre_tabla
[REFERENCING OLD AS old | NEW AS new]
FOR EACH ROW [WHEN condición] bloque PLSQL;

momento_ejecución = BEFORE, AFTER


evento = INSERT, UPDATE, DELETE
Laboratorio 1
▸ Realizar una transacción
▸ Crear un SP (Procedimiento Almacenado) que transfiera saldo de una
cuenta bancaria “A” a una cuenta bancaria “B”
▸ Se debe validar que el monto a transferir sea menor a Q. 2,000, si es así
se realiza la transacción, de lo contrario no se realiza.

▸ ASUNTO:
BD2 – C – NOMBRE
15

También podría gustarte