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

AA10 Ev3 Manejo de transacciones bloqueos y control de concurrencia en

SQLSERVER

Presentado por:

WILLIAM YESID VARGAS FERRUCHO


SOLEDAD VARGAS MONTENEGRO

Al Instructor:
ROSA OLIVEROS
NARLY SANCHEZ

Ficha:
1966108
Grupo F

Servicio Nacional de Aprendizaje - SENA

ESPECIALIZACIÓN TECNOLÓGICA EN GESTIÓN Y SEGURIDAD EN


BASE DE DATOS

MAYO 2020
CONCURRENCIA Y BLOQUEOS EN LOS SMBD - Laboratorio 10

Solución actividades propuestas.


4.2.1. Abra la máquina virtual donde tiene instalado Windows server 2003 sp 2 y SQL
Server 2008 R2, después inicio -> todos los programas -> SQL Server 2008 R2 -> SQL
Server Management Studio. Nos conectamos al servidor -> en la parte izquierda ->
base de datos -> la Base de datos de la secretaria de salud nombre “SecSalud”.
Elaborar 2 transacciones diferentes insertando, actualizando o eliminando registro 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ódigo de las 2 transacciones como evidencia.

Paso 1. Ejecuto el comando sp_lock: ver la información de los bloqueos


Confirmo que no hay procesos bloqueados
Paso 2. Elaborar 2 transacciones
Código utilizado
begin transaction insert into dbo.persona
(idpersona,tipoidentificacion,nombre,apellido,fechaNacimiento,sexo)
values (1234,1,'Pepito','Perez',2020-05-09,'M');

begin transaction insert into dbo.persona


(idpersona,tipoidentificacion,nombre,apellido,fechaNacimiento,sexo)
values (5678,1,'Pepe','Martinez',2020-05-05,'M');
Paso 3. Empleando el comando Dbcc opentran confirmo el estado de la transacción
anteriormente ejecutada.

4.2.2. Abrir una consulta nueva en SQL Server 2008 R2 y escribir el siguiente comando
COMMIT TRANSACTION y verificar de nuevo la cantidad de transacciones activas y
determinar que hace este comando en la base de datos SecSalud.
Paso 4. El ejecutar el comando COMMIT TRANSACTION el Sistema termina las
transacciones activas y emite la última transacción realizada.
4.2.3. Que sucede al hacer una consulta de todos los datos de la tabla eps si
anteriormente se ejecuta el siguiente comando. BEGIN TRANSACTION INSERT INTO
dbo.EPS (ideps, nombre, estadoeps) VALUES (15,'confisena',1);
Paso 5. El ejecutar el comando anterior se agregará una nueva fila a la tabla EPS con
los nuevos datos asignados.

Para la cancelación de la transacción anterior ¿qué comando se debe utilizar?


Paso 6. Para la cancelación de la transacción anterior ejecuto el comando ROLLBACK
TRANSACTION
4.2.4. Que le falta a la siguiente transacción para que se efectúen los cambios en la
base de datos Secretaria de Salud.
BEGIN TRANSACTION INSERT INTO persona (idpersona, tipodeidentificacion,
nombre, apellido, fechaNacimiento, sexo) VALUES (1112548, 1, ‘Pedro’, ‘Garcia’, 1982-
01-27, ’M’) INSERT INTO EPS (ideps, nombre, estadoeps) VALUES
(16,’confinacional’,4
Paso 7. Al ejecutar el comando anterior se observa un error en la variable
tipodeidentificacion, su escritura correcta es tipoidentificacion y finalmente definir la
finalización de la transacción
mediante un COMMIT TRANSACTION
El comando correcto será:
BEGIN TRANSACTION
INSERT INTO persona (idpersona, tipoidentificacion,
nombre, apellido, fechaNacimiento, sexo)
VALUES (1234567, 1, 'Pedro', 'Garcia', 1982-01-27, 'M')
INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (17,'confinacional',4)
commit transaction

select * from persona;


select * from EPS;
Paso 8. Al efectuar la corrección anterior ejecuto nuevamente el comando observando
que se completa correctamente y los cambios se han efectuado.

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


explicita o automática.
Script Tipo de Transacción
BEGIN TRANSACTION INSERT INTO Implícita
cliente (cedula, nombre) VALUES
(1,’sena’) COMMIT TRANSACTION
INSERT INTO cliente (cedula, nombre) Automática
VALUES (1,’sena’)
INSERT INTO cliente (cedula, nombre) Explicita.
VALUES (1,’sena’) COMMIT
TRANSACTION
4.3. Bloqueos.
4.3.1. Abra una nueva consulta. Use la base de datos Secretaria de Salud En una
nueva consulta ejecute sp_lock y revise los resultados.
Paso 9. Ejecuto el comando sp_lock.

Abra informe de transacciones de bloqueo para verificar que no hay ningún bloqueo
activo. Clic derecho en su bd -> informe -> informe estándar -> Todas las transacciones
de bloqueo.
Paso 10. Se verifica que no haya ningún bloqueo en la base de datos SecSalud.
4.3.2. Analizar el siguiente script.
Use SecSalud;
BEGIN TRAN
PRINT 'Transacciones Activas'
SELECT @@TRANCOUNT
SELECT * FROM EPS
PRINT 'Actualizamos la tabla EPS'
SELECT * FROM EPS
UPDATE EPS SET nombre = 'SALUDCOOPx' WHERE nombre = 'SALUDCOOP'
PRINT 'Miramos la actualización'
SELECT * FROM EPS WHERE ideps = 1
PRINT 'Transacciones Activas'
PRINT @@TRANCOUNT
SELECT * FROM EPS
PRINT 'Identificador de bloqueo'
SELECT @@spid

Paso 11. Al ejecutar el anterior script en la base de datos SecSalud y visualizar el


informe de transacciones, se observa que hay una transacción activa.

3.3 Ahora ejecute 3 transacciones diferentes de lectura y escritura.


• La primera transacción de solo lectura.
• La segunda transacción es de escritura de la tabla EPS.
• La tercera es de escritura y lectura de la tabla PERSONA.
Paso 12. Se ejecutan 3 transacciones diferentes de lectura y escritura
Script empleado:

begin transaction select * from dbo.persona;

begin transaction
update dbo.eps set nombre='SEGUROS SOCILES'WHERE ideps=4;

begin transaction
select * from dbo.persona where idPersona='12345'
update dbo.persona set nombre='Juan Antonio' where idPersona='12345';

commit transaction;

Genere un informe de transacciones, bloqueos y ejecute el procedimiento sp_lock con


las siguientes consultas:
SELECT * FROM EPS
SELECT * FROM Persona
Analice lo que ocurre con ellas.

Código añadido al Script:


select * from EPS;
select * from persona;

execute sp_lock;
Paso 13. Ejecuto el procedimiento sp_lock con las siguientes consultas:
SELECT * FROM EPS
SELECT * FROM Persona
Donde se evidencia las transacciones bloqueadas.

Paso 14. Genero un informe de transacciones donde se visualizan las tres anteriores
transacciones activas.
4.4. JMeter.
Ingrese al Apache Jmeter y cree un nuevo plan de pruebas que se denomine
con su nombre y apellido “nombre_apellido” y que tenga por comentario
“Secretaria de salud”.

Posteriormente cree un grupo de hilos con una conexión a la base de datos “secsalud”
y tres peticiones JBDC en las que utilice una de las siguientes consultas para cada
solicitud.

Consulta 1: Listado con el número de identificación, nombre y apellido de las


personas, además del nombre de la EPS y la fecha de ingreso y salida.

SELECT p.idpersona, p.nombre, p.apellido, e.Nombre,


h.fechaingreso, h.fecharetiro
FROM persona p
INNER JOIN historialpersona h on p.idpersona=h.idpersona
INNER JOIN eps e on e.ideps=h.ideps
ORDER BY p.apellido

Consulta 2: Listado en que se visualiza las EPS con el nombre de los servicios que
presta y el costo de cada uno ellos.
BEGIN;
SELECT e.nombre, t.descripcion, s.detalle, s.valor FROM eps e
INNER JOIN servicioeps s on e.ideps=s.ideps
INNER JOIN tipoServicio t on s.idtiposervicio=t.idtiposervicio
ORDER BY e.nombre
COMMIT;
Consulta 3: Listado con el número de identificación, nombre y apellido de las
personas, además del tipo de afiliación que tiene.
BEGIN;
SELECT p.idpersona, p.nombre, p.apellido, t.descripcion
FROM persona p
INNER JOIN historialpersona h ON p.idpersona=h.idpersona
INNER JOIN tipoafiliado t ON h.tipoafiliado=t.idtipoafiliado
ORDER BY t.descripcion;
COMMIT;
Tabla con datos obtenidos en Jmeter

No. No. Periodos No.Peticiones No. Desviación Rendimiento Media Mediana


Prueba Hilos de Muestras /Minuto
subida
1 10 10 5 150 13 979.006 6 1
2 25 10 5 375 17 2,302.968 6 1
3 50 10 5 750 50 4,128.440 8 1
4 100 10 5 1500 694 5,895.068 101 1
5 250 10 5 3750 2604 8,868.044 589 1
6 500 10 5 7500 6823 8,707.767 1603 1
7 1000 10 5 15000 14321 8,847.209 3391 1
8 1500 10 5 22500 21534 8,728.599 5120 1
9 2000 10 5 30000 27392 9,288.117 6468 1
10 3000 10 5 45000 41952 9,189.706 10009 1
11 4000 10 5 60000 56644 8,987.014 13775 1

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