Está en la página 1de 11

MALKA IRINA IGUARAN NAVARRO

MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE


CONCURRENCIA EJECUTANDO LA PRÁCTICA PROPUESTA.
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.

El análisis constante de un SMBD, permite ver su desempeño en todo momento. Si


se detecta que las transacciones no son respondidas con la rapidez que se necesita
o se pierden datos, el Administrador de la Base de Datos, debe aplicar las medidas
correctivas para solucionar las fallas, analizando su comportamiento a través de
herramientas gráficas previstas por el fabricante de la aplicación.

A continuación, demos respuesta algunos casos que se pueden presentar.

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.

Auto-attach to process '[2736] [SQL] localhost' on machine 'localhost' succeeded.


The thread 'localhost [54]' (0x1610) has exited with code 0 (0x0). The program
'[2736] [SQL] localhost: localhost' has exited with code 0 (0x0). Este comando por sí
solo no hace nada, debe ser acompañado de otras cláusulas, dado que este
comando se utiliza para Finalizar la transacción si no se han encontrado errores.

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)

Presenta el siguiente 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.

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


utilizar?

Hay que utilizar el comando, SET IDENTITY_INSRTEPS para que deje insertar
datos de forma de inserción explicita en la tabla.

Ejemplo:
BEGIN TRANSACTION
SETIDENTITY_INSERT EPS ON INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (15,'confisena',1)
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) 8

Le faltan algunos comandos:


SET IDENTITY_INSERT [tabla] ON,
para que esta transacción pueda correr y arreglar campos en la tabla persona:
tipoidentifiacion, idPersona;
quedaría:
BEGIN TRANSACTION SET IDENTITY_INSERT EPS ON INSERT INTO Persona
(idPersona, tipoidentificacion, nombre, apellido, fechaNacimiento, sexo)
VALUES (1123996697, 1, 'Malka', 'Iguaran', 1985-11-27, 'M')
INSERT INTO EPS (ideps, nombre, estadoeps) VALUES (16,'confiacional',4).

En el siguiente cuadro especificar para cada tipo de transacción si es


implícita, explicita o automática.

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.

Use la base de datos Secretaria de Salud En una nueva consulta ejecute


sp_lock y revise los resultados.

A continuación se verifican las consultas definidas en el laboratorio para comenzar


la parte de trabajo con bloqueos de transacciones:

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.
CONCURRENCIA, TRANSACCIONES, ACCESOS Y BLOQUEOS. MANEJO DE
JMETER.
Tipos de Concurrencia de Transacciones:
Optimista: Deja realizar modificaciones de los datos y se persisten (commitado).
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.


Independiendo 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 (commitados).

READ COMMITTED: No dejan leer valores modificados por otras transacciones no


persistidos (commitados). Al releer datos que se han comitado por otra transacción
durante la ejecución de la propia; obtiene valores diferentes.

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. No impide que otras transacciones modifiquen los datos leídos por la
nuestra.

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.

TRANSACCIONES EN SQL SERVER


En SQL Server el tipo de concurrencia es pesimista. El bloqueo se activa al modificar
los datos; no al leerlos. Si queremos activarlo en su lectura 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


SETTRANSACTION 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.

Anexo la pantalla de conexión de SQL server.


Definimos 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
define la conexión jdbc

Definimos la petición de la base de datos


Luego se anexa el componente gráfico

También podría gustarte