Documente Academic
Documente Profesional
Documente Cultură
1
INTRODUCCIÓN
2
1. MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE CONCURRENCIA
DE LA PRACTICA (LABORATORIO 10_ BASE DATOS)
R/ el resultado es:
2. Que sucede al hacer una consulta de todos los datos de la tabla EPS si
anteriormente se ejecuta el siguiente comando:
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 pk: el comando a utilizar es: SET IDENTITY_INSERT EPS
Ejemplo:
BEGIN TRANSACTION
SET IDENTITY_INSERT EPS ON
INSERT INTO EPS (ideps, nombre, estadoeps)
3
VALUES (15,'confisena',1)
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);
R/ lo que hay que hacer es 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)
4
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..
Automática
Es el modo de administración de transacciones predeterminado de SQL Server Database
Engine (Motor de base de datos de SQL Server). Cada instrucción Transact-SQL se
confirma o se revierte cuando finaliza. Si una instrucción termina correctamente, se
confirma; si encuentra un error, se revierte. Una conexión a una instancia de Motor de base
de datos funciona en modo de confirmación automática siempre que no se suplante el modo
predeterminado mediante transacciones explícitas o implícitas.
5. Abra una nueva consulta. Use la base de datos Secretaria de Salud En una
nueva consulta ejecute sp_lock y revise los resultados.
Se verifican las consultas definidas en el laboratorio para comenzar la parte de trabajo con
bloqueos de transacciones:
5
6. Bloqueos.
Use la base de datos Secretaria de Salud En una nueva consulta ejecute sp_lock y
revise los resultados. 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.
6
7. Concurrencia, transacciones, accesos y bloqueos. Manejo de Jmetter.
7.1 Tipos de Concurrencia de Transacciones
7
REPEATABLE READ: Evita el problema del READ COMMITED. REPEATABLE READ
evita que otra transacción modifique los datos modificados por nuestra transacción. Dado
que los datos leídos; pueden depender de lo realizado en la otra transacción.
SERIALIZABLE: REPEATABLE READ que además se extiende para inserciones.
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:
8
Permite recuperar de manera íntegra los resultados de pruebas anteriores, o almacenarlos
en un histórico para posibles comparaciones de resultados.
9
En las configuraciones de seguridad como les he definido, el usuario de conexion es pc-PC
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:
11
Luego se define la conexión jdbc:
12
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.
14
Anexo reporte resumen, un 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.
15
Anexo el monitor de rendimiento de Sql server en función, dentro del menú performance tool,
programas del Pak de instalación de Sql server, server profile
16
CONCLUSIONES
Los límites de las transacciones de la base de datos o el sistema son siempre necesarios.
Ninguna comunicación con la base de datos puede darse fuera de una transacción de la
base de datos (esto parece confundir a muchos desarrolladores acostumbrados al modo
auto-commit). Siempre use límites de transacción claros, incluso para las operaciones de
sólo lectura. Dependiendo del nivel de aislamiento y las capacidades de la base de datos,
esto podría requerirse o no, pero no hay inconvenientes si siempre demarca explícitamente
las transacciones. Con seguridad, una transacción única de base de datos va a funcionar
mejor que muchas transacciones pequeñas, inclusive para leer datos.
17