Вы находитесь на странице: 1из 15

INTRODUCCIÓN

El rendimiento de un servidor. Una supervisión eficaz implica tomar instantáneas periódicas


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 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. 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 provistas por el fabricante de la aplicación.
La estructura del informe está organizada de la siguiente forma: Supervisión de un Sistema
Administrador de Base de Datos. Explica es el objetivo de supervisar un Sistema
Administrador de Base de Datos, como optimizar la supervisión y que herramientas se pueden
utilizar para analizar su funcionamiento. Para la detección 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
supervisión 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 acompañado de otras clausulas, dado que
este comando se utiliza para Finalizar la transacción 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 cancelación de la transacción 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 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)
VALUES (15,'confisena',1)

4.2.4. 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, 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.2.5. 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.

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
ningún bloqueo activo. Clic derecho en su bd -> informe -> informe estándar -> 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 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.

2.2 Tipos de Nivel de Aislamiento de Transacción


 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
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 leidos 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.

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 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
En SQL AZURE solo existe READ COMMITTED SNAPSHOT. No se puede desactivar con la
configuración 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 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.
3.1 Manejo de transacciones y control de concurrencia, Jmeter - Práctica.
Para este laboratorio, se Utilizaron parámetros de configuración en el base de datos, los
cuales por motivo de facilidad y configuración 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 conexión base datos: pc-PC
Pasword: 123
Puerto conexion: 1433
base de datos name: Sec_salud
Anexo la pantalla de conexión de sql server, donde se detalla que no conecto con
autenticación 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 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,


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
conexión.
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 función, dentro del menú performance tool,
programas del Pak de instalación de Sql server, server profile
Para más detalle en el Server Profile, Menú tools, performance monitor.

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.

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-datos-
bloqueo-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-
en-sql-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-8574-
4bf83af65374/control-de-concurrencia?forum=vcses

Вам также может понравиться