Está en la página 1de 17

AA10-EV2-MANEJO DE TRANSACCIONES, BLOQUEOS Y

CONTROL DE CONCURRENCIA EJECUTANDO LA PRÁCTICA


PROPUESTA.
Alcaldía de San Antonio del
SENA

Edisson Galíndez Bermúdez


Miguel Ángel Ramírez Severiche
Nohora Esther Malagón Sáenz

Servicio Nacional de Aprendizaje - SENA


Centro de Servicios y Gestión Empresarial
2019
AA10-EV2-MANEJO DE TRANSACCIONES, BLOQUEOS Y
CONTROL DE CONCURRENCIA EJECUTANDO LA PRÁCTICA
PROPUESTA.
Alcaldía de San Antonio del
SENA

Edisson Galíndez Bermúdez


Miguel Ángel Ramírez Severiche
Nohora Esther Malagón Sáenz

Presentado a:
Ing. Diana María de Jesús Rico Mesa

Servicio Nacional de Aprendizaje - SENA


Centro de Servicios y Gestión Empresarial
2019
INTRODUCCIÓN

Una transacción es un conjunto de operaciones Transact SQL que se ejecutan como un único
bloque, es decir, si falla una operación Transact SQL fallan todas. Si una transacción tiene éxito,
todas las modificaciones de los datos realizadas durante la transacción se confirman y se
convierten en una parte permanente de la base de datos. Si una transacción encuentra errores y
debe cancelarse o revertirse, se borran todas las modificaciones de los datos. La transacción más
simple en SQL Server es una única sentencia SQL. Una transacción ‘autocommit’, una
transacción autocompletada. Estas transacciones deben cumplir 4 propiedades fundamentales
comúnmente conocidas como ACID (atomicidad, coherencia, asilamiento y durabilidad).

Para el desarrollo de esta actividad se utilizara Microsoft SQL Server y el sistema operativo
Microsoft Windows 2008 R2 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. de
la aplicación.

Página. 3
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”.

2. ABRIR UNA CONSULTA NUEVA EN SQL SERVER 2008 R2 Y ESCRIBIR


COMANDOS PARA TRANSACCIONES Y PARA DESHACER UNA
TRANSACCIÓN. Y DETERMINAR QUE HACE ESTE COMANDO EN LA
BASE DE DATOS SECSALUD.

COMMITTRANSACTION: comando para realizar la transacción.


ROLLBACK: comando para deshacer una transacción.

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 EPS (ideps, nombre, estadoeps)
VALUES (15,’confisena’,1)

Página. 4
PARA LA CANCELACIÓN DE LA TRANSACCIÓN ANTERIOR ¿QUÉ
COMANDO SE DEBE UTILIZAR?
Arroja un error Cannot insert explicit value for identity column in table 'EPS' when
IDENTITY_INSERT is set to OFF. Esto ocurre porque SQL server no permite insertar
datos a llaves primarias de forma normal: hay utilizar el comando, para que deje insertar
datos de forma de inserción explicita en la tabla a una llave privaría(PK).

El comando por utilizar es: SET IDENTITY_INSERT EPS

Ejemplo:
BEGIN TRANSACTION
SET IDENTITY_INSERT EPS ON
INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (15,'confisena',1)

4. ¿QUE LE FALTA A LA SIGUIENTE TRANSACCIÓN PARA QUE SE


EFECTÚEN LOS CAMBIOS EN LA BASE DE DATOS SECRETARIA DE
SALUD Y QUE LE FALTA PARA DESHACERLA?

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)

Página. 5
Se debe agregar el comando SET IDENTITY_INSERT [tabla] ON, para que esta
transacción pueda correr y arreglar campos tabla persona: tipoidentifiacion,
idPersona; quedaría:

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)

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
1. TRANSACTION
INSERT INTO cliente (cedula, nombre)
2. EXPLICITAS
VALUES
3. (1,’sena’)
COMMIT TRANSACTION
INSERT INTO cliente (cedula, nombre) AUTOMATICAS
VALUES (1,’sena’)
INSERT INTO cliente (cedula, nombre)
VALUES (1,’sena’) EXPLICITAS
COMMIT TRANSACTION

TRANSACCIONES IMPLÍCITAS: Este tipo de transacciones, se conocen


como transacciones "de Confirmación automática" y es el comportamiento predeterminado de
SQL Server, donde ejecuta (o hace efectivo los cambios en los ficheros de datos) por separado
cada sentencia Transact-SQL justo después de que se termine dicha sentencia. Por ejemplo,

Página. 6
pensemos que tenemos dos INSERT, el primero de los cuales nos da error, y el segundo se
ejecuta de forma exitosa, si trabajamos con Transacciones Implícitas, veremos como el segundo
cambio se mantiene porque cada INSERT se incluye automáticamente en su propia transacción.
Podemos encontrar escenarios donde la confirmación automática de
las transacciones (Transacciones Implícitas) puede ser peligroso, por ejemplo, si
borramos accidentalmente todas las filas (o un grupo de filas) de una tabla, no tendremos opción
de deshacer la transacción.

Las Transacciones implícitas, crean una nueva transacción, cuando en una sesión de SQL Server
se ejecuta algún ALTER TABLE, FETCH, REVOKE, CREATE,
GRANT, SELECT, DELETE, INSERT, TRUNCATE TABLE, DROP, OPEN, y UPDATE. Una
transacción no implícita, una vez creada, permanece abierta y no finaliza hasta que no se produce
un ROLLBACK o se invoca al COMMIT. La Transacciones Implícitas finalizan cuando se
inicia una nueva transacción en la misma sesión.
Para activar el modo de trabajo con las transacciones implícitas se ejecuta: SET
IMPLICIT_TRANSACTIONS ON. Para desactivar las transacciones implícitas: SET
IMPLICIT_TRANSACTIONS OFF

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. Transacciones explícitas, es el modo de trabajo recomendado. y de
esta forma se puede tener el control de un conjunto de operaciones, definidas dentro de la misma
transacción. Si una operación fuese errónea, es posible hacer ROLLBACK del conjunto de
operaciones que están dentro de la misma transacción. Esto nos permite establecer reglas de
negocio de forma fácil, y mantener coherencia en los datos según lo que queramos realizar.

Begin Transaction: Establece el punto de partida de una transacción explícita.

Página. 7
Rollback Transaction: Revierte la transacción y pone los datos al estado en que estaban justo
antes del inicio de la transacción.(Los recursos usados por la transacción son liberados.)

Commit Transaction: Finaliza la transacción si no se han encontrado errores. (Los recursos


usados por la transacción son liberados.)

Begin Distributed Transaction: Permite definir el comienzo de una transacción distribuida


(MS-DTC).

Save Transaction: Permite definir una señal dentro de la misma transacción al que se puede
volver si parte de la transacción se cancela. Solo se podrían revertir los cambios hasta la señal
indicada.

CONCURRENCIA, TRANSACCIONES, ACCESOS Y BLOQUEOS. MANEJO DE


JMETTER.

Tipos de Concurrencia de Transacciones


Optimista: Deja realizar modificaciones de los datos y se persisten. Cuando se van a persistir se
verifica que no se han modificado por otras transacciones simultáneamente; en cuyo caso
produce un error.
Pesimista: Para los datos modificados, realizar un bloqueo de los mismos. Impendiendo que
otras transacciones realicen cambios de esos datos.

Tipos de Nivel de Aislamiento de Transacción


READ UNCOMMITTED: Leen valores modificados por otras transacciones no persistidos.
READ COMMITTED: No dejan leer valores modificados por otras transacciones no persistidos.
READ_COMMITTED_SNAPSHOT: Evita el problema del READ COMMITED. Crea un estado
en la base de datos; de esta manera la transacción lee los datos referidos a ese estado.
REPEATABLE READ: Evita el problema del READ COMMITED y evita que otra transacción
modifique los datos modificados por nuestra transacción.
SERIALIZABLE: REPEATABLE READ que además se extiende para inserciones.

Página. 8
Transacciones En Sql Server
El bloqueo se activa al modificar los datos; no al leerlos. Si queremos activarlo en su lectura con
debemos usar la cláusula

WITH UPDLOCK.
SELECT * FROM TABLE WITH (UDPLOCK) WHERE ID = 1

El nivel del Aislamiento en SQL SERVER se indica con la instrucción SET TRANSACTION
ISOLATION LEVEL. Por defecto es READ COMMITTED.

En SQL SERVER cuando indicamos READ COMMITTED, puede ser READ COMMITTED o
READ COMMITED SNAPSHOT. Esto se determina en función de la configuración de la base
de datos:

READ COMMITED SNAPSHOT: La base de datos se encuentra con la configuración SET


READ_COMMITTED_SNAPSHOT ON.

READ COMMITTED: La base de datos se encuentra con la configuración SET


READ_COMMITTED_SNAPSHOT OFF

Rendimiento Con Jmeter

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.

Página. 9
Manejo de transacciones y control de concurrencia, Jmeter - Práctica.
Ingresamos a la SQL Server Manager Studio y nos conectamos a nuestra instancia que en este
caso es LOCALHOST . La instancia no tiene autenticación, cuando se creo se dejo con acceso
libre porque es solo de uso personal.

Página. 10
Primero se define el grupo de hilos a trabajar o usuarios a concurrir:

Se define la conexión con el controlador jdb, quien permitirá acceder al SQL server:

Página. 11
Luego se define la conexión jdbc:

URL BD: jdbc:pc-PC://localhost:1433;databaseName=Sec_salud


DRIVER JDBC: com.microsoft.sqlserver.jdbc.SQLServerDriver
USUARIO: pc-PC

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

Página. 12
Página. 13
Luego se anexa el componente gráfico:

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.

Página. 14
Reporte más numérico que permite verificar varianza de datos y concurrencia.

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,

Página. 15
programas del Pak de instalación de SQL server, server profile.

Página. 16
RECURSOS BIBLIOGRÁFICOS
• https://unpocodejava.wordpress.com/2011/01/10/tecnicas-de-bloqueo-sobre-base-de-
datos-bloqueo-pesimista-y-bloqueo-optimista/.
• https://grimpidev.wordpress.com/2011/02/08/control-de-concurrencia-multiversion-
mvcc/.
• http://www.monografias.com/trabajos96/manejo-transacciones/manejo-
transacciones.shtml.
• http://www.programandoamedianoche.com/2009/04/transacciones-y-modos-de-
aislamiento-en-sql-server-y-adonet/.
• http://www.devjoker.com/contenidos/catss/292/Transacciones-en-Transact-SQL.aspx

Página. 17

También podría gustarte