Está en la página 1de 11

Manejo de Transacciones, Bloqueos y Control de

Concurrencia Ejecutando la Práctica Propuesta

Ing. Luis Felipe Niquinas

SENA
2019
Control de Concurrencia
El control de accesos concurrentes y específicamente de transacciones
concurrentes es manejado por un módulo del dbms llamado scheduler. Muchos de
los datos de la base no se encuentran nada más en disco sino también en los
buffers de memoria, de ahí que el scheduler interactúa con ellos y en su defecto
solicita la lectura de los datos del disco.

● Mecanismo para asegurar la propiedad de aislamiento


● Protocolo de Bloqueo: reglas acerca de cómo se deben acceder los recursos
para generar planificaciones secuenciales (vistas o conflictos)
● Inanición: Cuando una transacción debe esperar por siempre
● Interbloqueos: (deadlocks)
● Perder la concurrencia (Todo secuencial)
● Largas esperas

Control de Concurrencia Optimista


El único enfoque consistente con una alta concurrencia y una alta escalabilidad es el
control de concurrencia optimista con versionamiento, el chequeo de versión utiliza
números de versión o sellos de fecha (timestamps) para detectar actualizaciones en
conflicto y para prevenir la pérdida de actualizaciones.

Livelock
Espera indefinida de una transacción por un bloqueo que no se llega a conceder
porque se cede a otras transacciones, una solución (sistemas operativos): estrategia
first-come-first-served (se atiende al primero que llega).
Deadlock
T1: LOCK A; LOCK B; UNLOCK A; UNLOCK B;
T2: LOCK B; LOCK A; UNLOCK B; UNLOCK A;
T1 y T2 bloquean A y B => Espera indefinida de T1 y T2.
Soluciones (sistemas operativos):

● Concesión simultánea de todos los bloqueos de una transacción.


● Asignar un orden lineal arbitrario a los elementos

Bloqueo Pesimista
El modelo de bloqueo pesimista impide actualizaciones simultáneas de los registros,
tan pronto como un usuario empieza a actualizar un registro se coloca un bloqueo
sobre el mismo se informa a otros usuarios que intentan actualizar este registro de
que otro usuario tiene una actualización en curso, los otros usuarios deben esperar
hasta que el primer usuario haya acabado de confirmar los cambios liberando de
esta forma el bloqueo del registro. Sólo entonces puede otro usuario realizar
cambios basados en los cambios del usuario anterior.

Una ventaja del modelo de bloqueo pesimista es que impide el problema de la


resolución de conflictos evitandolos, las actualizaciones se serializan y cada
actualización posterior se inicia con los cambios confirmados del registro del usuario
anterior. El bloqueo pesimista es un enfoque útil cuando se pueden retardar
actualizaciones posteriores hasta que finalice una actualización anterior. Esto
normalmente implica que las actualizaciones se producen en un intervalo corto de
tiempo.

Serialización de transacciones
Permite el proceso de transacciones asignándoles tiempos de procesamiento el cual
permite incrementar el rendimiento del sistema ya que se ejecuta un máximo de
procesos en forma concurrente y no a través de una serie. La ventaja es que a un
mismo tiempo de reloj se pueden hacer dos operaciones, aunque el proceso de
sincronización es más complicado.
Un aspecto muy importante en el manejo de transacciones es el de mantener y
aplicar algoritmos de control sobre los datos o recursos; para ese control también se
utilizan protocolos que proporcionen confiabilidad como lo siguientes:
● Atomicidad
● Protocolos de recuperación total
● Protocolos de compromiso global
Bloqueos
Un bloqueo es un tipo de acceso que se permite a un elemento, el SGBD impone
los bloqueos necesarios en cada momento, el gestor de acceso a los datos
implementa las restricciones de acceso en algunos sistemas se permite que el
usuario pueda indicar el bloqueo más adecuado (locking hints).

Tipos de bloqueo con respecto a la operación:

● read-locks: sólo permite lectura


● write-locks: permite lectura y escritura

El gestor de bloqueos almacena los bloqueos en una tabla de bloqueos:

(<elemento>, <tipo de bloqueo>, <transacción>) = (E,B,T)

La transacción T tiene un tipo de bloqueo B sobre el elemento E. Normalmente E es


clave aunque no siempre porque varias transacciones pueden bloquear el mismo
elemento de forma diferente.

Niveles de Bloqueo
Especifica la granularidad del bloqueo

● Fila: fila individual 0


● Clave: fila de un índice
● Página: páginas (8 Kb)
● Extent: extensión (grupo de 8 páginas contiguas de datos o índices)

Modos de Bloqueo
Especifica el modo en que se bloquea un elemento

● Compartido: para operaciones sólo de lectura, se permiten lecturas


concurrentes pero ninguna actualización.
● Actualización: para operaciones que pueden escribir, sólo se permite que una
transacción adquiera este bloqueo si la transacción modifica datos se
convierte en exclusivo en caso contrario en compartido.
● 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, por ejemplo si
una transacción necesita bloqueo exclusivo y varias transacciones tienen
bloqueo de intención no se concede el exclusivo.
● Intención compartido: bloqueo compartido.
● Intención exclusivo: Bloqueo exclusivo.
● Compartido con intención exclusivo: algunos bloqueos compartidos y otros
exclusivos.
● Esquema: para operaciones del DDL.
● Actualización masiva: en operaciones de actualización masiva
● Table: Tabla completa
● Database: Base de datos completa

Bloqueo de Dos Fases Estricto


Se usa para solucionar el problema anterior.

● Una transacción no puede escribir en la base de datos hasta que se haya


alcanzado su punto de compromiso (Evita los retrocesos en cascada).
● Una transacción no puede liberar ningún bloqueo hasta que haya finalizado
de escribir en la base de datos.

Protocolos Basados en Grafos


A menudo es útil observar el conjunto de elementos de datos de la base de datos
como una estructura de grafo. Por ejemplo:

● Organización lógica o física de los elementos.


● Definición de elementos de varios tamaños donde los grandes engloban a los
pequeños. Ej: relacional: tupla ⊆ bloque ⊆ relación ⊆ base de datos.
● Control de concurrencia efectivo.

Se pueden diseñar protocolos que no sean de dos fases pero que aseguren la
secuencialidad. En general, sea { , , , } 1 2 n D = d d K d el conjunto de todos los
elementos de datos de la base de datos dotado de un orden parcial →. Si en el
grafo existe un arco i j d →d , entonces la transacción que acceda tanto a i d como a
j d debe acceder primero a i d y después a j d .

Protocolo de Árbol
Caso particular de protocolo basado en grafos, grafos que sean árboles con raíz.

Reglas:
● Cada transacción i T bloquea al menos un elemento.
● El primer bloqueo de i T puede ser sobre cualquier elemento.
● Sucesivos bloqueos de i T sólo pueden ser sobre elementos cuyo padre haya
bloqueado i T .
● Los elementos se pueden desbloquear en cualquier momento.
● i T no puede bloquear de nuevo un elemento que haya bloqueado y
desbloqueado anteriormente.
T1: LOCK B; LOCK E; LOCK D; UNLOCK B; UNLOCK E; LOCK G; UNLOCK
D; UNLOCK G;
T2: LOCK D; LOCK H; UNLOCK D; UNLOCK H;
T3: LOCK B; LOCK E; UNLOCK E; UNLOCK B;
T4: LOCK D; LOCK H; UNLOCK D; UNLOCK H;

Transacciones
Cada i T lleva asociada una marca temporal fijada ( ) i MT T . Si Ti se selecciona
antes que Tj , entonces ( ) ( ) i j MT T < MT T . El valor de ( ) i MT T puede extraerse
del reloj del sistema o con contadores lógicos de transacciones.

Elementos
Cada elemento de datos D lleva asociado dos marcas temporales:

● MTR(D): mayor marca temporal de todas las transacciones que ejecutan con
éxito READ D;
● MTW(D ): mayor marca temporal de todas las transacciones que ejecutan
con éxito WRITE D;

Protocolo de Ordenación por Marcas Temporales


Asegura que todas las operaciones leer y escribir conflictivas se ejecutan en el
orden de las marcas temporales.

Supóngase que la transacción Ti ejecuta READ(D).


● Si MT(Ti) < MTW(D) entonces Ti necesita leer un valor de D que ya se ha
sobrescrito. Por tanto se rechaza la operación READ y Ti se retrocede.
● Si MT(Ti) ≥ MTW(D) entonces se ejecuta la operación READ y MTR(D) se
asigna al máximo de MTR(D) y de MT(Ti).
Supóngase que la transacción Ti ejecuta WRITE(D).
● Si MT(Ti) < MTR(D) entonces el valor de D que produce Ti se necesita
previamente y el sistema asume que dicho valor no se puede producir nunca.
Por tanto, se rechaza la operación WRITE y Ti se retrocede.
● Si MT(Ti) < MTW(D) entonces Ti está intentando escribir un valor de D
obsoleto. Por tanto, se rechaza la operación WRITE y Ti se retrocede.
● En otro caso se ejecuta la operación WRITE y MT(Ti) se asigna a MTW(D).

Gestión de fallos de transacciones


Causas de aborto:

● Fallo de la transacción: interrupción por el usuario, fallo aritmético, privilegios


de acceso.
● Deadlock: aborto de una transacción
● Algoritmos de secuencialidad.
● Error software o hardware fácil: 1, 2 y 3. difícil: 4. Puntos de recuperación por
copias de seguridad.

Compromiso de Transacciones

● Transacciones activas: en ejecución


● Transacciones completadas: sólo pueden abortar por causa grave (4).
● Punto de compromiso: (COMMIT) Momento a partir del cual se entienden
completadas.

Las transacciones comprometidas ni se retroceden ni se rehacen.

Recuperación de Caídas

Tipos de caídas:
● Error de memoria volátil.
● Error de memoria permanente.

Problema: asegurar la atomicidad de las escrituras de las transacciones, puede


haber una caída del sistema antes de que se hayan escrito todos los datos
modificados por una transacción.
Herramientas para el monitoreo y Manejo de Transacciones

Activity Monitor: rastrea solo las métricas de SQL Server más importantes, para
obtenerlas ejecutar consultas contra su instancia SQL Server anfitrión cada 10
segundos, el desempeño es monitoreado sólo mientras Activity Monitor está abierto
lo que lo hace una solución ligera con casi ningún costo extra.

Las métricas son mostradas en 5 paneles colapsables: Overview, Processes,


Resource Waits, Data File I/O, y Recent Expensive Queries.

El panel Overview muestra el porcentaje de tiempo del procesador, número de


tareas en espera, operaciones I/O en la base de datos en MB/seg, y el número de
requerimientos batch.

El panel Processes muestra procesos de SQL Server actualmente funcionando en la


instancia, la información mostrada es: Login, aplicación y anfitrión usados, estado de
tarea y comando, tiempo de espera, etc. La información en la tabla puede ser
filtrada por el valor de la columna específico.

El menú contextual del panel Process provee una característica útil para un análisis
más profundo y resolución de problemas. Es el rastreo de procesos seleccionado en
SQL Server Profiler.

EL panel Resource Waits muestra esperas para diferentes recursos: memoria,


compilación, red, etc.
Muestra el tiempo de espera (el tiempo que las tareas de SQL Server están
esperando en recursos del sistema), el tiempo de espera reciente, el tiempo
acumulativo de espera y el contador de espera promedio.

El panel Data File I/O muestra una lista de todos los archivos de base de datos:
MDF, NDF y LDF, sus nombres y rutas, actividad reciente de lectura y escritura y
tiempo de respuesta.

EL panel Recent Expensive Queries muestra las consultas en los últimos 30


segundos que usaron más recursos: procesador, memoria, disco y red. El menú
contextual permite abrir la consulta en una pestaña de consultas de SQL Server
Management Studio y abrir su plan de ejecución.

Data Collector
Es otra característica de monitoreo y optimización integrada en SQL Server
Management Studio, colecta métricas de desempeño de instancias SQL Server las
guarda en un repositorio local de tal manera que puedan ser usadas para un análisis
posterior, usa Data Warehousing, SQL Server Agent e Integration Services.

A diferencia de Activity Monitor, Data Collector le permite especificar las métricas


que monitorea, ofrece tres conjuntos integrados de métricas (colectores de datos)
con las métricas de monitoreo de desempeño más importantes y comunes, para
monitorear métricas de desempeño adicionales, colectores de datos personalizados
pueden ser creados vía código T-SQL o API.
El reporte integrado Disk Usage está disponible en el menú contextual Data
Collection Muestra el espacio usado por los archivos de la base de datos, las
tendencias de crecimiento y el crecimiento promedio diario.

El conjunto de recolectores de datos Query Statistics recolecta código de consultas,


estadísticas, actividad y planes de ejecución de consultas para las 10 consultas más
costosas.

El conjunto de recolectores de datos Server Activity recolecta datos acerca del


procesador, la memoria, el disco I/O y el uso de red. El reporte muestra la CPU, la
memoria, el disco I/O y el uso de la red, las esperas de SQL Server, la instancia de
SQL Server y la actividad del sistema operativo.

También podría gustarte