MANEJO DE TRANSACIONES, BLOQUEOS Y CONTROL DE CONCURRENCIAS EJECUTANDO LA PRÁCTICA PROPUESTA
ANDRES FERNANDO JAIMES FABIO ANDRES LIZARAZO CARLOS ANTONIO RAMIREZ
SERVICIO NACIONAL DE APRENDIZAJE- SENA SEN A (CASA) ESPECIALIZACION TECNOLOGICA EN GESTION Y SEGURIDAD DE BASES DE DA D ATOS FICHA 113!"" PIEDECUESTA #1$
CONE%IONES DE USUARIOS Con el comando &'&*+.+&&&/0& permitira visualizar todos los usuarios conectados su estado, tiempo conexión, procesos que realizo,ect al sistema manejador de base de datos.
N2MERO DE PROCESO, ESTADO, BLOQUEOS Y COMANDOS QUE LOS USUARIOS ESTÁN EJECUTANDO EJECUTANDO El comando &+450 nos permite ver la cantidad de procesos, estado del proceso, bloqueos y comandos que los usuarios han estado ejecutando en el sistema manejador de base de datos. (sys.sysprocesses) ( sys.sysprocesses)
OBJETOS BLOQUEADOS Con el comando &+60.7 permite visualizar los objetos bloqueados de una base de datos, el estado y el tipo de bloqueo.
SEEC! request"session"id sessionid, resource"type type, resource"database"id dbid, #$%EC!"&'E(resource"associated"entity"id, resource"database"id) objectname, request"mode rmode, request"status rstatus *# sys.dm"tran"loc+s -E*E resource"type & (/0'!'$'SE/, /#$%EC!/)
TRANSACCIONES BLOQUEADAS ACTUALES Con el comando &'&*+89:+60.7& permitir1 ver las transacciones que se bloquearon actualmente, el tipo de recurso, peticiones, tipo de respuesta
MONITOR DE ACTIVIDAD 2enera in3ormación 4eneral acerca de los procesos que se est1n ejecutando en el sistema manejador de bases de datos como lo es el id de sesión, la instancia, base de datos, el estado de tarea, comando, tiempo de respuesta.
Se representa los tipos de recursos que est1 utilizando el sistema el sistema manejador de bases de datos como bloqueos, sesiones, cerrojos, etc.
uestra la cantidad de in3ormación de entrada y salida de datos desde las como lo son los reportes desde las di3erentes bases de datos.
2enera la in3ormación acerca de las consultas ejecutadas actualmente, el n5mero de veces ejecutadas, el tipo de consulta, el tiempo de duración y el ori4en de la base de datos.
INFORMES 0esde la base de datos SSALUD 4eneramos el in3orme de la cantidad de transacciones ejecutadas en la misma base de datos.
n3orme de todas las transacciones realizadas en la secretaria de salud.
MANEJO DE TRANSACCIONES •
'bra la m1quina virtual donde tiene instalado indo6s server 7889 sp 7 y S: Server 788; *7, despu todos los pro4ramas => S: Server 788; *7 => S: Server ana4ement Studio.
&os conectamos al servidor => en la parte izquierda => base de datos => la $ase de datos de la Secretaria de salud nombre ?SSalud@.
•
Elaborar 7 transacciones di3erentes insertando, actualizando o eliminando re4istro de esta base de datos, todas estas transacciones deben quedar abiertas, tomar impresione de pantalla de la consulta de la variable que almacena las transacciones activas y copiar el códi4o de las 7 transacciones como evidencia.
•
Aeri3icación de las transacciones abiertasB la consulta retornara la cantidad de transacciones activas.
•
a si4uiente consulta mostrara los pid de todas las transacciones abiertas para su posterior an1lisis.
•
'brir una consulta nueva en S: Server 788; *7 y escribir el si4uiente comando C#! !*'&S'C!#& y veri3icar de nuevo la cantidad de transacciones activas y determinar que hace este comando en la base de datos SSalud.
Este proceso completara las transacciones que se encuentran abiertas, 4uardando la in3ormación suministrada. •
:ue sucede al hacer una consulta de todos los datos de la tabla ES si anteriormente se ejecuta el si4uiente comando.
2enera un error porque la llave de la ES es autoincremental.
Se modi3ica el script y se ejecuta nuevamenteB
Como se observa se puede visualizar que un dato 3ue insertado, este se muestra pero cualquier transacción que solicite su uso no lo podr1 realizar debido a que no se ha realizado la con3irmación del insert (commit) por esta razón podr1 visualizar mas no ser utilizada.
P:9: 6: .:.6:./; 6: 89:&:../; :89/09 <=>? .0*:0 & @ >8/6/:9
•
:ue le 3alta a la si4uiente transacción para que se e3ect5en los cambios en la base de datos Secretaria de Salud.
e hace 3alta el .0**/8 89: para que se con3irme la transacción. •
En el si4uiente cuadro especi3icar para cada tipo de transacción si es implDcita, explicita o autom1tica.
SCRIPT BEGIN TRANSACTION INSERT INTO .6/8 (.>6:, 0*@9) VALUES (1,&:) COMMIT TRANSACTION INSERT INTO .6/8 (.>6:, 0*@9) VALUES (1,&:) INSERT INTO .6/8 (.>6:, 0*@9) VALUES (1,&:) COMMIT TRANSACTION
TIPO DE TRANSACCIN E6/./8: inician ($E2& !*'&S'C!#&) y 3inalizan (C#! !*'&S'C!#&), y alber4an un conjunto de instrucciones dentro de la misma transacción. A>80*8/.: cada instrucción individual es una transacción y se con3irma autom1ticamente. I*6./8: crean una nueva transacción, cuando en una sesión de S: Server se ejecuta al45n '!E* !'$E, E!C-, *EA#E, C*E'!E, 2*'&!, SEEC!, 0EE!E, &SE*!, !*F&C'!E !'$E, 0*#, #E&, y F0'!E, una vez creada, permanece abierta y no 3inaliza hasta que no se produce un *#$'C o se invoca al C#!.
BLOQUEOS •
Fse la base de datos Secretaria de Salud, en una nueva consulta ejecute &+60.7 y revise los resultados.
COLUMNA
TIPO DE DATOS
DESCRIPCIN
&/
&*:66/8
d. de sesión.
./
&*:66/8
&8:8>&
.5:9(3)
d. de contexto de ejecución de un subproceso determinado, asociado con un d. de sesión especD3ico. EC0 G H8, I, 7, 9,...nJ, donde 8 siempre representa el subproceso principal o primario, y HI, 7, 9,... nJ representan los subprocesos secundarios. Estado del proceso. os valores posibles sonB I:.8/0. S: Server est1 restableciendo la sesión. S>0 6:0. a sesión est1 ejecutando una tarea en se4undo plano, como una detección de interbloqueos. R9&/;. a sesión est1 realizando una reversión de una transacción. P/8. a sesión est1 esperando que un subproceso de trabajo est< disponible. E.>8:@6. a tarea de la sesión est1 en la cola de ejecutables de un pro4ramador mientras espera obtener un cuanto de tiempo. B60=>0 09 @>.6. a tarea de la sesión est1 esperando que se libere un bloqueo por bucle. S>&/:. a sesión est1 esperando a que 3inalice un evento, como una entrada o salida.
60/:*
.5:9(1#")
&ombre de inicio de sesión asociado al proceso especD3ico.
50&8:* @67
.5:9(1#") .5:9(K)
@:* .*
.5:9(1#") .5:9(1$)
9=>&8+/
/8
&ombre del host o equipo de cada proceso. d. de sesión del proceso de bloqueo, si existe. 0e lo contrario, esta columna tiene el valor cero. Cuando una transacción hu
•
'bra in3orme de transacciones de bloqueo para veri3icar que no hay nin45n bloqueo activo. Clic derecho en su $0 => in3orme => in3orme est1ndar => !odas las transacciones de bloqueo.
'ctualmente no se encuentra nin45n bloqueo en la base de datos. •
'nalizar el si4uiente script
Fse SSaludK $E2& !*'& *&! /!ransacciones 'ctivas/ SEEC! LL!*'&C#F&! SEEC! M *# ES *&! /'ctualizamos la tabla ES/ SEEC! M *# ES F0'!E ES SE! nombre G /S'F0C##x/ -E*E nombre G /S'F0C##/ *&! /iramos la actualización/ SEEC! M *# ES -E*E ideps G I *&! /!ransacciones 'ctivas/ *&! LL!*'&C#F&! SEEC! M *# ES *&! /denti3icador de bloqueo/ SEEC! LLspid
*esultadosB
•
'l ejecutar este script tener abierta las si4uientes consultasB SEEC! M *# ES
*esultadosB
n3orme de todas las transaccionesB
n3orme de todas las transacciones de bloqueoB
Sp"loc+
? :&: .0 .:: .0&>68: ./0:9: as consultas ejecutadas no presentan nin45n inconveniente porque solo se est1 realizando uso de lectora y no escritura, en el in3orme de transacciones se observa que a5n se encuentra una transacción activa, pero no representa 4ravedad si esta entidad no est1 siendo utilizada. Si se presentara al45n inconveniente lo ideal es
identi3icar quien tiene la transacción abierta y cerrarla bien sea matando el proceso (+ill pid), abortando (rollbac+) o 4uard1ndolo (commit ). •
'hora ejecute 9 transacciones di3erentes de lectura y escrituraB
a primera transacción de solo lecturaB SEEC! M *# ES 6here idepsGI
a se4unda transacción es de escritura de la tabla ESB &SE*! &!# NSSaludO.NdboO.NESO (NnombreO ,NestadoepsO) A'FES (/Eps rueba/ ,I)
a tercera es de escritura y lectura de la tabla E*S#&'B update persona set nombreG/usuario prue/ 6here idpersonaG/I8;78IP/ select top 7 M 3rom ersona
2enere un in3orme de transacciones, bloqueos y ejecute el procedimiento sp"loc+ con las si4uientes consultasB SEEC! M *# ES SEEC! M *# ersona •
'nalice lo que ocurre con ellasB
-asta ahora no se 4enera nin45n bloqueo.
APACHE JMETER n4rese al 'pache %meter y cree un nuevo plan de pruebas que se denomine con su nombre y apellido ?lizarazojaimesramirez@ y que ten4a por comentario ?Secretaria de salud@.
ue4o de crear el plan de pruebas, se crea y asi4na a un nombre a los 4rupos de hilos como lo es el n5mero de hilos, periodo de subida y contador de bucle.
Se realiza la con3i4uración de conexión del apache jmeter con el sistema manejador de base de datos a la base de datos ?SSalud@
Se asi4na la petición %0$C o consulta a ejecutar en el plan de pruebas, comentario y el nombre de la variable.
Se 4enera un 4r13ico de resultados desde la consulta ejecutada anteriormente.
*eporte resumen de la consultada ejecutada.
Este es el Qrbol de resultados de la consulta ejecutada donde nos muestra el estado de la consulta que 3ue exitoso.
2r13ico de resultados de la consulta.