AA10 Ev2
AA10 Ev2
AA10 Ev2
INSTRUCUTOR
NELSON LOPEZ
1
INTRODUCCIÓN
2
1. CONTROL DE CONCURRENCIA
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.
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
1.3 Deadlock
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
• 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.
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
Caso particular de protocolo basado en grafos, grafos que sean árboles con raíz.
4.2 REGLAS:
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:
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;
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.
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).
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.
Tipos de caídas:
• Error de memoria volátil.
• Error de memoria permanente.
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 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.
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.
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.
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:
Nombre Servidor
Nombre de variable sql server
Usuario conexión base datos
Pasword
Puerto conexion
base de datos name
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.
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