Vous êtes sur la page 1sur 17

CASO DE ESTUDIO N 10 MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE

CONCURRENCIA EN UN MOTOR DE BASE DE DATOS ESPECFICO

Aprendiz
Jos David Bautista Lozano

SERVICIO DE APRENDIZAJE SENA


ESPECIALIZACION TECNOLOGICA DE GESTION Y SEGURIDAD DE BASES DE DATOS
2016

CONTENIDO
Introduccin..........3
Desarrollo de los Puntos de Laboratorio.....................................4
Concurrencia, Transacciones, Acceso y Bloqueo...9
Transacciones en SQL SERVER........10
Transacciones en Otro Entorno..........11
Conclusiones......20
Referencias Bibliogrficas.21

INTRODUCCIN

El rendimiento de un servidor. Una supervisin eficaz implica tomar instantneas peridicas del
rendimiento actual para aislar procesos que causan problemas y recopilar datos de forma
continua a lo largo del tiempo para realizar el seguimiento de las tendencias de rendimiento.
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 travs de un
Sistema Computacional.
La Evaluacin de una Base de Datos, es una de las tareas ms 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 desempeo. El anlisis constante de un SMBD, permite ver su desempeo 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 travs de herramientas
grficas provistas por el fabricante de la aplicacin.
La estructura del informe est organizada de la siguiente forma: Supervisin de un Sistema
Administrador de Base de Datos. Explica es el objetivo de supervisar un Sistema Administrador
de Base de Datos, como optimizar la supervisin y que herramientas se pueden utilizar para
analizar su funcionamiento. Para la deteccin de fallas en el funcionamiento de un Sistema
Administrador de Base de Datos, se entregan recomendaciones para encontrar donde se
encuentra la falla, identificando donde se generan cuellos de botellas o alta demanda de un
recurso como CPU, Memoria, Disco o Red. Se detallan las herramientas de supervisin que nos
provee Microsoft.

1. Manejo de transacciones, bloqueos y control de concurrencia de la practica (laboratorio 10_


base datos)
Desarrollar puntos laboratorio 10:
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.
R/ el resultado es:
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 acompaado de otras clausulas, dado que
este comando se utiliza para Finalizar la transaccin si no se han encontrado errores.
4.2.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) '
Para la cancelacin de la transaccin anterior qu comando se debe utilizar?.
R/ sale 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 insercin 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)
VALUES (15,'confisena',1)
4.2.4. Que le falta a la siguiente transaccin para que se efecten 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);
R/ lo que hay que hacer es agregar el comando: SET IDENTITY_INSERT [tabla] ON, para que
esta transaccin pueda correr y arreglar campos tabla persona: tipoidentifiacion,
idPersona; quedara:
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 transaccin si es implcita, explicita o
automtica.

Transacciones explcitas
Por el contrario, las Transacciones explcitas son las que se define en el cdigo 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
transaccin.
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..
Automtica
Es el modo de administracin de transacciones predeterminado de SQL Server Database
Engine (Motor de base de datos de SQL Server). Cada instruccin Transact-SQL se confirma o
se revierte cuando finaliza. Si una instruccin termina correctamente, se confirma; si encuentra
un error, se revierte. Una conexin a una instancia de Motor de base de datos funciona en modo
de confirmacin automtica siempre que no se suplante el modo predeterminado mediante
transacciones explcitas o implcitas.
4.3.1. 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:

4.3. 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
ningn bloqueo activo. Clic derecho en su bd -> informe -> informe estndar -> Todas las
transacciones de bloqueo.

2.0 Concurrencia, transacciones, accesos y bloqueos. Manejo de Jmetter.


2.1 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 simultneamente; 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.
2.2 Tipos de Nivel de Aislamiento de Transaccin
READ UNCOMMITTED: Leen valores modificados por otras transacciones no persisitidos
(commitados).
READ COMMITTED: No dejan leer valores modificados por otras transacciones no
persisitidos (commitados). READ COMMITTED al releer datos que se han comitado por otra
transaccin durante la ejecucin 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 transaccin lee los datos referidos a ese estado. No
impide que otras transacciones modifiquen los datos leidos por la nuestra.
REPEATABLE READ: Evita el problema del READ COMMITED. REPEATABLE READ evita
que otra transaccin modifique los datos modificados por nuestra transaccin. Dado que los
datos ledos; pueden depender de lo realizado en la otra transaccin.
SERIALIZABLE: REPEATABLE READ que adems se extiende para inserciones.
2.3 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 con debemos usar la clusula WITH
UPDLOCK.
SELECT * FROM TABLE WITH (UDPLOCK) WHERE ID = 1
El nivel del Aislamiento en SQL SERVER se indica con la instruccin 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 funcin de la configuracin de la base de
datos:
READ COMMITED SNAPSHOT: La base de datos se encuentra con la configuracin SET
READ_COMMITTED_SNAPSHOT ON.
READ COMMITTED: La base de datos se encuentra con la configuracin SET
READ_COMMITTED_SNAPSHOT OFF
En SQL AZURE solo existe READ COMMITTED SNAPSHOT. No se puede desactivar con la
configuracin SET READ_COMMITTED_SNAPSHOT OFF.
2.4 TRANSACCIONES EN OTROS ENTORNOS
En Entity Framework, LINQ, DataSet, el tipo de concurrencia es optimista.
En NHibernate, por defecto tiene concurrencia optimista. Pero se puede habilitar concurrencia
pesimista.
En general, se recomienda el uso del TransactionScope, para determinar el nivel de aislamiento
con TransactionScopeOption .
3. RENDIMIENTO CON JMETER
Se ha permitido desarrollar una herramienta de anlisis 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 automtica sin necesidad de
tratar los datos en hojas de clculo.
Permite estudiar de manera grfica la relacin de los diferentes indicadores de las pruebas,
generando automticamente grficas de rendimiento.
Facilita la Identificacin de los posibles puntos de saturacin para detectar "cuellos de botella".
Desenmascara los posibles errores de la aplicacin por la aplicacin de concurrencia.

Permite recuperar de manera ntegra los resultados de pruebas anteriores, o almacenarlos en


un histrico para posibles comparaciones de resultados.
El objetivo final es dotar al ingeniero de pruebas de una herramienta que aumente su
productividad, y tambin la capacidad de anlisis para dotar de mayor calidad las pruebas de
rendimiento.
3.1 Manejo de transacciones y control de concurrencia, Jmeter - Prctica.
Para este laboratorio, se Utilizaron parmetros de configuracin en el base de datos, los cuales
por motivo de facilidad y configuracin de mi equipo pueden diferir de los recomendados por el
Tutor, por ello los detallo.
Nombre Servidor: localhost
Nombre de variable sql server: pc-PC
Usuario conexin base datos: pc-PC
Pasword: 123
Puerto conexion: 1433
base de datos name: Sec_salud
Anexo la pantalla de conexin de sql server, donde se detalla que no conecto con autenticacin
de Sql server si no de Windows y utilizo el localhost de la maquina.

En las configuraciones de seguridad como les he definido, el usuario de conexion es pc-PC

Primero se define el grupo de hilos a trabajar o usuarios a concurrir:

Se define la ocnexion con el controlador jdb, quien permitira acceder al Sql server:

Luego se define la conexin jdbc:

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


DRIVER JDBC: com.microsoft.sqlserver.jdbc.SQLServerDriver
USUARIO: pc-PC
A continuacin se definen las peticiones a la base de datos,

Luego se anexa el componente grafico:

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

Anexo reporte resumen, un reporte mas numerico que permite verificar varianza de datos y
concurrencia.

Otra grafica tipo spline que permite ver en una secuencia mas lineal, la concurrencia de las
transacciones medidas por el Jmeter.

Anexo el monitor de rendimiento de Sql server en funcin, dentro del men performance tool,
programas del Pak de instalacin de Sql server, server profile

Para ms detalle en el Server Profile, Men tools, performance monitor.

CONCLUSIONES
Los lmites de las transacciones de la base de datos o el sistema son siempre necesarios.
Ninguna comunicacin con la base de datos puede darse fuera de una transaccin de la base
de datos (esto parece confundir a muchos desarrolladores acostumbrados al modo autocommit). Siempre use lmites de transaccin claros, incluso para las operaciones de slo lectura.
Dependiendo del nivel de aislamiento y las capacidades de la base de datos, esto podra
requerirse o no, pero no hay inconvenientes si siempre demarca explcitamente las
transacciones. Con seguridad, una transaccin nica de base de datos va a funcionar mejor que
muchas transacciones pequeas, inclusive para leer datos.

REFERENCIAS BILBIOGRAFICAS
http://basesdedatosatope.blogspot.com.co/2013/04/estrategias-para-el-control-de.html

https://unpocodejava.wordpress.com/2011/01/10/tecnicas-de-bloqueo-sobre-base-de-datosbloqueo-pesimista-y-bloqueo-optimista/
https://grimpidev.wordpress.com/2011/02/08/control-de-concurrencia-multiversion-mvcc/
https://msdn.microsoft.com/es-es/library/jj856598%28v=sql.120%29.aspx
http://www.monografias.com/trabajos96/manejo-transacciones/manejo-transacciones.shtml
http://copro.com.ar/Aislamiento_%28sistemas_de_base_de_datos%29.html
http://www.programandoamedianoche.com/2009/04/transacciones-y-modos-de-aislamiento-ensql-server-y-adonet/
http://es.slideshare.net/dantoniocruz/transacciones-27511077
https://msdn.microsoft.com/es-es/library/ms188929%28v=sql.120%29.aspx
http://www.devjoker.com/contenidos/catss/292/Transacciones-en-Transact-SQL.aspx
http://www.campusmvp.es/recursos/post/Fundamentos-de-SQL-Transacciones.aspx
https://msdn.microsoft.com/es-es/library/ms187749%28v=sql.120%29.aspx
http://www.forosdelweb.com/f87/concurrencia-sql-server-519836/
https://www.fdi.ucm.es/profesor/fernan/DBD/apuntestema07.pdf

https://social.msdn.microsoft.com/Forums/es-ES/e785b566-aa9e-4765-85744bf83af65374/control-de-concurrencia?forum=vcses
http://ell-jh-sena.blogspot.com.co/

Vous aimerez peut-être aussi