Proteccion de Datos.
Enviado por Eric • 23 de Mayo de 2018 • 2.024 Palabras (9 Páginas) • 362 Visitas
...
Control de Concurrencia.
Coordinación de la ejecución de transacciones que se ejecutan simultáneamente.
Objetivos:
Garantizar la secuencia de ejecución de transacciones que se ejecutan simultáneamente, permitiendo mantener la consistencia de la base de datos.
Problemas de la concurrencia:
La ejecución simultánea de transacciones sobre una base de datos compartida puede crear diferentes problemas en la integridad y consistencia de los datos.
¿Cuáles pueden ser estos problemas?
Actualizaciones Perdidas.
Analice el siguiente ejemplo:
Suponga que en la Tabla PRODUCTO se tiene Cantidad_prod = 35
Ocurren las transacciones T1 y T2 de forma concurrente tratando de actualizar el valor de cantidad_prod.
La siguiente tabla muestra el problema que ocurre al ejecutarse las transacciones de forma concurrente.
Actualización Perdida.
TIME
TRANSACCIÓN
PASOS
VALOR ALMACENADO
1
T1
Leer Cantidad_prod
35
2
T2
Leer Cantidad_prod
35
3
T1
Cantidad_prod = 35 + 100
4
T2
Cantidad_prod = 35 - 30
5
T1
Escribe cantidad_prod
(Actualización Perdida)
135
6
T2
Escribe cantidad_prod
5
Cuál es el problema ?
Una transacción T2 está tratando de leer el valor Cantidad_prod, antes de que otra transacción T1, accediendo al mismo valor, haya sido acometida. Por lo tanto T2 opera sobre el valor 35 y está sustrayendo 35 unidades, mientras tanto T1 escribe el valor 135 (valor perdido), el cual es rápidamente sobrescrito por T2. La adición de las 100 unidades se pierden.
Recuperación Inconsistente:
Ocurre cuando una transacción calcula algún resumen sobre un dato, mientras otras transacciones están actualizando el dato. Una transacción puede leer ciertos datos antes de que se cambien y otros datos después que hayan sido cambiados, produciendo resultados inconsistentes
El Scheduler
Es un programa especial que tiene el SGBD, que establece el orden en el cual se ejecutarán las operaciones que incluyen las transacciones concurrentes.
Garantiza además un uso eficiente de la CPU.
Para determinar el orden apropiado, este programa se basa en diferentes algoritmos de control de concurrencia.
Métodos de Bloqueo
Un bloqueo garantiza que un mismo dato no puede ser accedido por varias transacciones concurrentes a la vez. Cada transacción tiene una prioridad de bloqueo para acceder a un dato.
Muchos SGBD automáticamente inician y hacen ejecutar procedimientos de bloqueo y toda la información es administrada por el administrador de bloqueo, el cual es responsable de asignar y liberar los bloqueos usados por las transacciones.
Lock Granularity indica los diferentes niveles en que un bloqueo puede utilizarse.
- Base de Datos.
- Tabla.
- Página.
- Fila o inclusive un campo de la tabla.
Diferentes tipos de Bloqueo:
En dependencia del nivel del bloqueo el SGBD puede usar diferentes tipos de bloqueo.
- Binario Tiene solo dos estados:
- Bloqueado
- No bloqueado
Los objetos bloqueados son inaccesibles por otros objetos.
Si un objeto no está bloqueado está disponible para cualquier transacción.
Una transacción desbloquea un objeto cuando es ejecutada completamente.
Compartido/Exclusivo.
Existe un bloqueo compartido cuando:
- Las transacciones concurrentes tienen un bloqueo común de lectura.
- No producen ningún conflicto para las transacciones sólo de lectura.
- Una transacción quiere leer un dato de la base de datos y no existe ningún bloqueo exclusivo sobre ese dato.
Existe un bloqueo exclusivo cuando:
- El acceso es reservado específicamente para la transacción que ha bloqueado al objeto.
- Necesita ser usado cuando existe un potencial de conflicto
- Una transacción quiere actualizar un dato (escribir) y ninguna otra transacción mantiene un bloqueo sobre el dato.
Problemas con los Métodos de Bloqueo:
Aunque los bloqueos permiten prevenir serios problemas de inconsistencia de los datos, su uso puede conducir a dos grandes problemas:
...