Sei sulla pagina 1di 15

AA10-EV2-MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE

CONCURRENCIA EJECUTANDO LA PRÁCTICA PROPUESTA

PRESENTADO POR
MANUEL ENRIQUE GUERRA TARRIFA
ING SISTEMAS

INSTRUCTOR
CANDELARIA VICTORIA SUAREZ BELEÑO

SERVICIO NACIONAL DE APRENDIZAJE SENA


SINCELEJO 2019
INTRODUCCIÓN
En este laboratorio se realizarán actividades que permitirán realizar un control adecuado sobre la
concurrencia y bloqueos en la base de datos.
Los DBA tienen la responsabilidad de mantener disponibles los servicios que presta la base de
datos, para ello deben controlar el comportamiento de los procesos que acceden de forma
concurrente sobre datos compartidos y los bloqueos que estos generan sobre los mismos.
OBJETIVOS
General

 Supervisar y realizar ajustes sobre los parámetros que permiten controlar el


comportamiento de los procesos concurrentes y bloqueos, con el fin de mantener
disponible la base de datos y optimizar el desempeño del SMBD.
Específicos

 Reconocer las herramientas que son útiles para la supervisión de transacciones y


bloqueos en el SMBD SQL Server.
 Utilizar las herramientas de supervisión para monitorear el comportamiento de las
transacciones y bloqueos en el SMBD SQL Server.
 Administrar los recursos utilizados por las transacciones y bloqueos para mantener
disponible los servicios de la base de datos SQL Server.
1. Concurrencia y bloqueos en el SMBD SQL Server
Tabla1. Concurrencia y bloqueos en el SMBD SQL Server

 Datos de conexión de servidor Conexión con el usuario de autenticación de Windows de Para esta conexión utilizamos el usuario PC01\pc
manera local y conectamos con la base de datos
SecSalud

 BEGIN TRANSACTION: Inicio de una transacción.


 @@TRANCOUNT: Número de Transacciones actualmente activas.
 COMMIT TRANSACTION: Final de una transacción correcta.
 ROLLBACK TRANSACTION: Revierte una transacción.
 SET TRANSACTION ISOLATION LEVEL: Controlar el comportamiento de los bloqueos en el nivel de sesión.
 sp_lock: ver la información de los bloqueos.

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.

 Abrir una consulta nueva en SQL Server 2008 R2 y escribir el siguiente COMMIT TRANSACTION : Marca el final de una transacción correcta, implícita o
comando COMMIT TRANSACTION y verificar de nuevo la cantidad de explícita. Si @@TRANCOUNT es 1, COMMIT TRANSACTION hace que todas las
transacciones activas y determinar que hace este comando en la base de datos modificaciones de datos desde el inicio de la transacción sean parte permanente de la base
SecSalud. de datos, libera los recursos de la transacción y reduce @@TRANCOUNT a 0. Si
@@TRANCOUNT es mayor que 1, COMMIT TRANSACTION solo reduce
@@TRANCOUNT en 1 y la transacción se mantiene activa.

4.2.3. Que sucede al hacer una consulta de todos los datos de la tabla EPS si anteriormente se ejecuta el siguiente comando:
Que sucede al hacer una consulta de todos los datos de la tabla eps si anteriormente se Consulta de los datos de la tabla EPS
ejecuta el siguiente comando.

AL momento de realizar la consulta nos sale un error :


Mens. 544, Nivel 16, Estado 1, Línea 3
No se puede insertar un valor explícito en la columna de identidad de la
tabla 'EPS' cuando IDENTITY_INSERT es OFF.

SQL no permite la inserción de datos a llaves primaria en la forma normal para solucionar
esto utilizaremos la instrucción SET IDENTITY_INSERT EPS
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, tipoidentificacion, nombre, apellido,
fechaNacimiento, sexo)
VALUES (1112548, 1, 'Pedro', 'Garcia', 1982-01-27, 'M');
INSERT INTO EPS (nombre, estadoeps)
VALUES ('confinacional',4);

Para esta instrucción que está en la parte de arriba es necesario agregar la instrucción :
SET IDENTITY_INSERT [tabla] ON y corregir los campos de la tabla Persona, nos queda
de la siguiente manera

BEGIN TRANSACTION
SET IDENTITY_INSERT EPS ON
INSERT INTO Persona (idPersona, tipoidentificacion, nombre, apellido,
fechaNacimiento, sexo)
VALUES (111245548, 1, 'Pedro', 'Garcia', 1982-01-27, 'M')
INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (16,'confiacional',4)

4.2.5. En el siguiente cuadro especificar para cada tipo de transacción si es implícita, Transacciones explícitas
explicita o automática Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION y se
termina explícitamente con una instrucción COMMIT o ROLLBACK.
Script Tipo de Transacción
De confirmación automática: el gestor de datos inicia una transacción automáticamente
BEGIN TRANSACTION INSERT INTO Explicitas por cada operación que actualice datos. De este modo mantiene siempre la consistencia de
cliente (cedula, nombre) VALUES la base de datos, aunque puede generar bloqueos.
(1,’sena’) COMMIT TRANSACTION

INSERT INTO cliente (cedula, nombre) automáticas


VALUES (1,’sena’)

INSERT INTO cliente (cedula, nombre) explicitas


VALUES (1,’sena’) COMMIT
TRANSACTION

4.3.1. Abra una nueva consulta. Reporte de bloqueos


Use la base de datos Secretaria de Salud En una nueva consulta ejecute sp_lock y revise
los resultados.

4.3.2. Analizar el siguiente script. Informe de las trasacciones


Al monento de realizar las consultas no hay errores

Consultas en Apache – Jmeter Comenzamos con la configuración. Agregamos los Grupos de hilos y la coneccion a la base de datos
Configuración del plan la cual le colocamos el nombre “nombre_Apellido”

Agregamos la petición
Plan de N° de Periodo N° de No de Muestras Desviacion Rendimiento / Media Mediana
Prueba n° Hilos de subida Peticione Minuto
en (s) s
1 10 10 5

2 25 10 5
3 50 10 5

4 100 10 5

5 250 10 5

6 500 10 5

7 1000 10 5

8 1500 10 5 Presenta error al ejecutarse


9 2000 10 5 Presenta error al ejecutarse
10 3000 10 5 Presenta error al ejecutarse
11 4000 10 5 Presenta error al ejecutarse

Secuencia de la traza
CONCLUSIONES
Para esta actividad nos damos cuenta lo importante que es utilizar las transacciones como un filtro
para realizar las actualización, inserción y borrado en nuestro SMBD, debido a que si utilizamos
una transacción al momento de realizar una inserción en sql si tiene algún error no procede a
realizar el proceso. Es por ello que son importante para el desarrollo de un sistemas de información
y los datos nos da la certeza de que son los más fiables posibles.
WEBGRAFIA

 Dimitrijevic, N. and →, V. (2019). All about locking in SQL Server. [online] SQL Shack - articles
about database auditing, server performance, data recovery, and more. Available at:
https://www.sqlshack.com/es/todo-sobre-el-bloqueo-en-sql-server/ [Accessed 20 Sep. 2019].
 Docs.microsoft.com. (2019). Guía de versiones de fila y bloqueo de transacciones de SQL Server -
SQL Server. [online] Available at: https://docs.microsoft.com/es-es/sql/2014-toc/sql-server-
transaction-locking-and-row-versioning-guide?view=sql-server-2014 [Accessed 20 Sep. 2019].
 Docs.microsoft.com. (2019). Transacciones (Transact-SQL) - SQL Server. [online] Available at:
https://docs.microsoft.com/es-es/sql/t-sql/language-elements/transactions-transact-
sql?view=sql-server-2017 [Accessed 20 Sep. 2019].
 Microsoftsqlsecret.fullblog.com.ar. (2019). Transacciones Expl�citas o Impl�citas. SQL. [online]
Available at: http://microsoftsqlsecret.fullblog.com.ar/transacciones-explicitas-o-implicitas-
sql.html [Accessed 20 Sep. 2019].

Potrebbero piacerti anche