Sunteți pe pagina 1din 26

MANEJO DE TRANSACIONES, BLOQUEOS Y CONTROL DE

CONCURRENCIAS EJECUTANDO LA PRCTICA PROPUESTA

ANDRES FERNANDO JAIMES


FABIO ANDRES LIZARAZO
CARLOS ANTONIO RAMIREZ

SERVICIO NACIONAL DE APRENDIZAJE- SENA (CASA)


ESPECIALIZACION TECNOLOGICA EN GESTION Y SEGURIDAD DE BASES
DE DATOS
FICHA 1130488
PIEDECUESTA
2016

CONEXIONES DE USUARIOS
Con el comando sys.dm_exec_sessions permitira visualizar todos los usuarios
conectados su estado, tiempo conexin, procesos que realizo,ect al sistema
manejador de base de datos.

NMERO DE PROCESO, ESTADO, BLOQUEOS Y COMANDOS QUE LOS


USUARIOS ESTN EJECUTANDO.
El comando sp_who nos permite ver la cantidad de procesos, estado del proceso,
bloqueos y comandos que los usuarios han estado ejecutando en el sistema
manejador de base de datos. (sys.sysprocesses)

OBJETOS BLOQUEADOS
Con el comando sp_lock permite visualizar los objetos bloqueados de una base
de datos, el estado y el tipo de bloqueo.

SELECT request_session_id sessionid,


resource_type type,
resource_database_id dbid,
OBJECT_NAME(resource_associated_entity_id,
resource_database_id) objectname,
request_mode rmode,
request_status rstatus
FROM sys.dm_tran_locks
WHERE resource_type IN ('DATABASE', 'OBJECT')

TRANSACCIONES BLOQUEADAS ACTUALES


Con el comando sys.dm_tran_locks permitir ver las transacciones que se
bloquearon actualmente, el tipo de recurso, peticiones, tipo de respuesta.

MONITOR DE ACTIVIDAD
Genera informacin general acerca de los procesos que se estn ejecutando en el
sistema manejador de bases de datos como lo es el id de sesin, la instancia,
base de datos, el estado de tarea, comando, tiempo de respuesta.

Se representa los tipos de recursos que est utilizando el sistema el sistema


manejador de bases de datos como bloqueos, sesiones, cerrojos, etc.

Muestra la cantidad de informacin de entrada y salida de datos desde las como lo


son los reportes desde las diferentes bases de datos.

Genera la informacin acerca de las consultas ejecutadas actualmente, el nmero


de veces ejecutadas, el tipo de consulta, el tiempo de duracin y el origen de la
base de datos.

INFORMES
Desde la base de datos SSALUD generamos el informe de la cantidad de transacciones
ejecutadas en la misma base de datos.

Informe de todas las transacciones realizadas en la secretaria de salud.

MANEJO DE TRANSACCIONES

Abra la mquina virtual donde tiene instalado Windows server 2003 sp 2 y


SQL Server 2008 R2, despus 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 SSalud.

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 cdigo de las 2
transacciones como evidencia.

Verificacin de las transacciones abiertas: la consulta retornara la cantidad


de transacciones activas.

La siguiente consulta mostrara los pid de todas las transacciones abiertas


para su posterior anlisis.

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

Este proceso completara las transacciones que se encuentran abiertas, guardando


la informacin suministrada.

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

Genera un error porque la llave de la EPS es autoincremental.

Se modifica el script y se ejecuta nuevamente:

Como se observa se puede visualizar que un dato fue insertado, este se muestra
pero cualquier transaccin que solicite su uso no lo podr realizar debido a que no
se ha realizado la confirmacin del insert (commit) por esta razn podr visualizar
mas no ser utilizada.
Para la cancelacin de la transaccin anterior qu comando se debe
utilizar?

Que le falta a la siguiente transaccin para que se efecten los cambios en


la base de datos Secretaria de Salud.

Le hace falta el commit tran para que se confirme la transaccin.

En el siguiente cuadro especificar para cada tipo de transaccin si es


implcita, explicita o automtica.

SCRIPT
BEGIN TRANSACTION
INSERT INTO cliente (cedula,
nombre)
VALUES (1,'sena')
COMMIT TRANSACTION
INSERT INTO cliente (cedula,
nombre)
VALUES (1,'sena')
INSERT INTO cliente (cedula,
nombre)
VALUES (1,'sena')
COMMIT TRANSACTION

TIPO DE TRANSACCIN
Explicita: inician (BEGIN TRANSACTION) y
finalizan (COMMIT TRANSACTION), y albergan un
conjunto de instrucciones dentro de la misma
transaccin.
Automtica: cada instruccin individual es una
transaccin y se confirma automticamente.
Implcita: crean una nueva transaccin, cuando en
una sesin de SQL Server se ejecuta algn ALTER
TABLE, FETCH, REVOKE, CREATE,
GRANT, SELECT, DELETE, INSERT, TRUNCATE
TABLE, DROP, OPEN, y UPDATE, una vez
creada, permanece abierta y no finaliza hasta que
no se produce un ROLLBACK o se invoca al
COMMIT.

BLOQUEOS

Use la base de datos Secretaria de Salud, en una nueva consulta ejecute


sp_lock y revise los resultados.

COLUMNA

TIPO DE DATOS

DESCRIPCIN

spid

smallint

Id. de sesin.

ecid

smallint

status

nchar(30)

Id. de contexto de ejecucin de un subproceso


determinado, asociado con un Id. de sesin
especfico.
ECID = {0, 1, 2, 3,...n}, donde 0 siempre
representa el subproceso principal o primario, y
{1, 2, 3,...n} representan los subprocesos
secundarios.
Estado del proceso. Los valores posibles son:
Inactivo. SQL Server est restableciendo la
sesin.
Segundo plano. La sesin est ejecutando una
tarea en segundo plano, como una deteccin de
interbloqueos.
Reversin. La sesin est realizando una
reversin de una transaccin.
Pendiente. La sesin est esperando que un
subproceso de trabajo est disponible.
Ejecutable. La tarea de la sesin est en la cola
de ejecutables de un programador mientras
espera obtener un cuanto de tiempo.
Bloqueo por bucle. La tarea de la sesin est
esperando que se libere un bloqueo por bucle.
Suspendida. La sesin est esperando a que
finalice un evento, como una entrada o salida.

loginame

nchar(128)

Nombre de inicio de sesin asociado al proceso


especfico.

hostname
blk

nchar(128)
char(5)

dbname
cmd

nchar(128)
nchar(16)

request_id

int

Nombre del host o equipo de cada proceso.


Id. de sesin del proceso de bloqueo, si
existe. De lo contrario, esta columna tiene el
valor cero.
Cuando una transaccin hurfana distribuida
bloquea una transaccin asociada con un Id. de
sesin determinado, esta columna devolver '-2'
para la transaccin hurfana de bloqueo.
Base de datos utilizada por el proceso.
Comando de Motor de base de datos
(instruccin Transact-SQL, proceso de Motor de
base de datos interno, etc.) que se ejecuta para
el proceso.
Id. de las solicitudes que se ejecutan en una
sesin especfica.

Abra informe de transacciones de bloqueo para verificar que no hay ningn


bloqueo activo. Clic derecho en su BD -> informe -> informe estndar ->
Todas las transacciones de bloqueo.

Actualmente no se encuentra ningn bloqueo en la base de datos.

Analizar el siguiente script

Use SSalud;
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 actualizacin'
SELECT * FROM EPS WHERE ideps = 1
PRINT 'Transacciones Activas'
PRINT @@TRANCOUNT
SELECT * FROM EPS
PRINT 'Identificador de bloqueo'
SELECT @@spid

Resultados:

Al ejecutar este script tener abierta las siguientes consultas:


SELECT * FROM EPS

Resultados:

Informe de todas las transacciones:

Informe de todas las transacciones de bloqueo:

Sp_lock

Qu pasa con cada consulta? Hay errores? Si es as, Cmo se


solucionaran?

Las consultas ejecutadas no presentan ningn inconveniente porque solo se est


realizando uso de lectora y no escritura, en el informe de transacciones se observa
que an se encuentra una transaccin activa, pero no representa gravedad si esta
entidad no est siendo utilizada. Si se presentara algn inconveniente lo ideal es

identificar quien tiene la transaccin abierta y cerrarla bien sea matando el proceso
(kill pid), abortando (rollback) o guardndolo (commit ).

Ahora ejecute 3 transacciones diferentes de lectura y escritura:

La primera transaccin de solo lectura:


SELECT * FROM EPS where ideps=1

La segunda transaccin es de escritura de la tabla EPS:


INSERT INTO [SSalud].[dbo].[EPS]
([nombre]
,[estadoeps])
VALUES
('Eps Prueba'
,1)

La tercera es de escritura y lectura de la tabla PERSONA:


update persona set nombre='usuario prue' where idpersona='1082019'
select top 2 * from Persona

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:

Hasta ahora no se genera ningn bloqueo.

APACHE JMETER
Ingrese al Apache Jmeter y cree un nuevo plan de pruebas que se denomine con
su nombre y apellido lizarazojaimesramirez y que tenga por comentario
Secretaria de salud.

Luego de crear el plan de pruebas, se crea y asigna a un nombre a los grupos de


hilos como lo es el nmero de hilos, periodo de subida y contador de bucle.

Se realiza la configuracin de conexin del apache jmeter con el sistema


manejador de base de datos a la base de datos SSalud

Se asigna la peticin JDBC o consulta a ejecutar en el plan de pruebas,


comentario y el nombre de la variable.

Se genera un grfico de resultados desde la consulta ejecutada anteriormente.

Reporte resumen de la consultada ejecutada.

Este es el rbol de resultados de la consulta ejecutada donde nos muestra el estado de la


consulta que fue exitoso.

Grfico de resultados de la consulta.

S-ar putea să vă placă și