Вы находитесь на странице: 1из 21

MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE CONCURRENCIA

OSCAR DAVID SILVA GUTIERREZ


LILIANA YADITH FERNANDEZ GUERRA
LILIANA OLIVETH SOCARRAZ BERTY
ALHESVY VILLAREAL DUARTE

INSTRUCUTOR
NELSON LOPEZ

SERVICIO NACIONAL DE APRENDIZAJE SENA


PROGRAMA DE FORMACIÓN
ESPECIALIZACIÓN TECNOLÓGICA EN GESTIÓN Y SEGURIDAD DE BASES DE
DATOS
MODALIDAD VIRTUAL
2019

1
INTRODUCCIÓN

El rendimiento de un servidor y una supervisión eficaz implica tomar instantáneas


periódicas del rendimiento actual para aislar procesos que causan problemas y
recopilar datos de forma continua a lo largo del tiempo para realizar el seguimiento
de las tendencias de rendimiento. Microsoft SQL Server y el sistema operativo
Microsoft Windows Server proporcionan herramientas que le permiten ver las
condiciones actuales de la base de datos y realizar un seguimiento del rendimiento
a medida que éstas cambian. El objetivo de supervisar Bases de Datos, es evaluar
el rendimiento de un Sistema Manejador de Base de Datos (SMBD), para responder
a las transacciones realizadas por los usuarios que solicitan datos a través de un
Sistema Computacional.

La Evaluación de una Base de Datos, es una de las tareas más importantes de un


Administrador de Base de Datos. Este profesional es el encargado de analizar
constantemente el funcionamiento del SMBD, para optimizar el uso de los recursos,
como CPU, Memoria, Disco y Red, para ver su desempeño. El análisis constante
de un SMBD, permite ver su desempeño en todo momento. Si se detecta que las
transacciones no son respondidas con la rapidez que se necesita o se pierden
datos, el Administrador de la Base de Datos, debe aplicar las medidas correctivas
para solucionar las fallas, analizando su comportamiento a través de herramientas
gráficas provistas por el fabricante de la aplicación.

La estructura del informe está organizada de la siguiente forma: Supervisión de un


Sistema Administrador de Base de Datos. Explica es el objetivo de supervisar un
Sistema Administrador de Base de Datos, como optimizar la supervisión y que
herramientas se pueden utilizar para analizar su funcionamiento. Para la detección
de fallas en el funcionamiento de un Sistema Administrador de Base de Datos, se
entregan recomendaciones para encontrar donde se encuentra la falla, identificando
donde se generan cuellos de botellas o alta demanda de un recurso como CPU,
Memoria, Disco o Red. Se detallan las herramientas de supervisión que nos provee
Microsoft.

2
1. 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 (1)
 Interbloqueos: (dead locks)
 Perder la concurrencia (Todo secuencial)
 Largas esperas

1.1 CONTROL DE CONCURRENCIA OPTIMISTA

El único enfoque consistente con una alta concurrencia y una alta escalabilidad es
el control de concurrencia optimista con versiona miento. 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. Hibernate
proporciona tres enfoques posibles de escribir código de aplicación que utilice
concurrencia optimista. Los casos de uso que mostramos se encuentran en el
contexto de conversaciones largas, pero el chequeo de versiones tiene además el
beneficio de prevenir la pérdida de actualizaciones en transacciones individuales de
la base de datos.

3
1.2 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).

1.3 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):

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


2- Asignar un orden lineal arbitrario a los elementos

4
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

2. BLOQUEOS

Un bloqueo es una información del 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.

3.1 NIVELES DE BLOQUEO

Especifica la granularidad del bloqueo

• Fila: Fila individual


Clave: Fila de un índice
• Página: Páginas (8KB)
• Extent: Extensión (grupo de 8 páginas contiguas de datos o índices)

3.2 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.

5
• 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

3.3 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 evitando los conflictos. 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.

3.4 BLOQUEO DE DOS FASES ESTRICTO


Se usa para solucionar el problema anterior.
3.4.1 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)

6
3.4.2 Una transacción no puede liberar ningún bloqueo hasta que haya finalizado
de escribir en la
base de datos, i.e., los bloqueos no se liberan hasta después del punto de
compromiso

4. 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 dotados 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 .

4.1 PROTOCOLO DE ÁRBOL

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

4.2 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.

7
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;

5. 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.

5.1 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;

5.2 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.

En el siguiente cuadro especificar para cada tipo de transacción si es implícita,


explicita o automática.

8
5.2.1 Transacciones explícitas
Por el contrario, las Transacciones explícitas son las que se define en el código T-
SQL. Hay que indicar cuando se inician (BEGIN TRANSACTION) y cuando finalizan
(COMMIT TRANSACTION), y pueden albergar un conjunto de instrucciones dentro
de la misma transacción.

Cuando se produce el COMMIT, se hacen efectivos los cambios en los ficheros de


datos (.mdf y .ndf). Mientras no se realiza el COMMIT las sentencias de los cambios
se guardan en el log de transacciones (.log), que gracias a este es posible revertir
los cambios si fuese necesario.

5.2.2 Transacciones Automáticas

Es el modo de administración de transacciones predeterminado de SQL Server


Database Engine (Motor de base de datos de SQL Server). Cada instrucción
Transact-SQL se confirma o se revierte cuando finaliza. Si una instrucción termina
correctamente, se confirma; si encuentra un error, se revierte. Una conexión a una
instancia de Motor de base de datos funciona en modo de confirmación automática
siempre que no se suplante el modo predeterminado mediante transacciones
explícitas o implícitas.

5.3 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.
1. Supóngase que la transacción Ti ejecuta READ(D).
a. 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.
b. 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).
2. Supóngase que la transacción Ti ejecuta WRITE(D).
a. Si MT(Ti) < MTR(D) entonces el valor de D que produce Ti se necesita

9
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.
b. 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.
c. En otro caso se ejecuta la operación WRITE y MT(Ti) se asigna a MTW(D).

5.4 Gestión de fallos de transacciones

Causas de aborto:
1. Fallo de la transacción: interrupción por el usuario, fallo aritmético, privilegios de
acceso...
2. Deadlock->aborto de una transacción
3. Algoritmos de secuencialidad.
4. Error software o hardware
Fácil: 1, 2 y 3. Difícil: 4. Puntos de recuperación por copias de seguridad.

5.5 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.

5.6 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.

6. HERRAMIENTAS PARA EL MONITOREO Y MANEJO DE TRANSACCIONES.

CÓMO MONITOREAR INSTANCIAS Y BASES DE DATOS SQL SERVER

6.1 Activity Monitor

Activity Monitor rastrea solo las métricas de SQL Server más importantes. Para
obtenerlas, ejecuta 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.

10
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.

11
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.

6.2 Data Collector

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, lasguarda 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 monitoreará. 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.

12
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.

6.3 JMETER

13
Se ha permitido desarrollar una herramienta de análisis de resultados similar a la
que proporcionan las herramientas comerciales. Las principales ventajas que aporta
son:

 Permite generar un informe de pruebas de resultados de manera automática


sin necesidad de tratar los datos en hojas de cálculo.
 Permite estudiar de manera gráfica la relación de los diferentes indicadores
de las pruebas, generando automáticamente gráficas de rendimiento.
 Facilita la Identificación de los posibles puntos de saturación para detectar
"cuellos de botella".
 Desenmascara los posibles errores de la aplicación por la aplicación de
concurrencia.
 Permite recuperar de manera íntegra los resultados de pruebas anteriores, o
almacenarlos en un histórico para posibles comparaciones de resultados.

El objetivo final es dotar al ingeniero de pruebas de una herramienta que aumente


su productividad, y también la capacidad de análisis para dotar de mayor calidad las
pruebas de rendimiento.
6.3.1 Manejo de transacciones y control de concurrencia, Jmeter - Práctica.
Para este laboratorio, se Utilizaron parámetros de configuración en el base de
datos, los cuales se listan a continuación:

Nombre Servidor
Nombre de variable sql server
Usuario conexión base datos
Pasword
Puerto conexion
base de datos name

En las configuraciones de seguridad se utiliza el usuario de conexion

Primero se define el grupo de hilos a trabajar o usuarios a concurrir:

14
Se define la conexión con el controlador jdb, quien permitira acceder al Sql server:

Luego se define la conexión jdbc especifica con los parámetros: URL BD, DRIVER
JDBC, USUARIO.

15
A continuación, se definen las peticiones a la base de datos,

16
Luego se anexa el componente grafico:

17
Aquí una vez dato el Play en ejecutar, vemos como el grafico comienza a tener
cambios y ver los resultados de las transacciones o consultas de forma graficas
definida en los hilos de conexión.

Anexo reporte resumen, un reporte más numérico que permite verificar varianza
de datos y concurrencia.

18
Otra grafica tipo spline que permite ver en una secuencia más lineal, la
concurrencia de las transacciones medidas por el Jmeter.

Anexo el monitor de rendimiento de Sql server en función, dentro del menú


performance tool, programas del Pack de instalación de Sql server, server profile

19
20
BIBLIOGRAFIA

http://www.devjoker.com/contenidos/catss/292/Transacciones-en-Transact-
SQL.aspx

https://solutioncenter.apexsql.com/es/como-monitorear-sus-instancias-y-bases-de-
datos-sql-server/

http://www.forosdelweb.com/f87/concurrencia-sql-server-519836/

http://dis.unal.edu.co/~icasta/icf_admon_bd.html

http://www.programandoamedianoche.com/2009/04/transacciones-y-modos-de-
aislamiento-en-sql-server-y-adonet/

21

Вам также может понравиться