Aa10-Ev3-Manejo de Transacciones, Bloqueos y Control de Concurrencia en Un Motor de Base de Datos Específico

December 1, 2018 | Author: harry moreno | Category: Microsoft Sql Server, Sql, Table (Database), Databases, Areas Of Computer Science
Share Embed Donate


Short Description

UO...

Description

AA10-EV3-MANEJO DE TRANSACCIONES, BLOQUEOS Y CONTROL DE CONCURRENCIA EN UN MOTOR DE BASE DE DATOS ESPECÍFICO

PRESENTADO POR: HARRY LEYSON MORENO MOSQUERA

SERVICIO NACIONAL DE APRENDIZAJE SENA PROGRAMA DE FORMACIÓN ESPECIALIZACIÓN TECNOLÓGICA EN GESTIÓN Y SEGURIDAD DE BASES DE DATOS MODALIDAD VIRTUAL 2018

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  Auto-attach to process process '[2736] '[2736] [SQL] [SQL] localhost' localhost' on machine machine 'localhost' 'localhost' succeeded 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) (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 fechaNacimiento, sexo)

(idPersona,

tipoidentificacion, tipoidentifica cion,

nombre,

apellido,

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, tipoidentifiac ion, idPersona; quedaría: BEGIN TRANSACTION SET IDENTITY_INSERT EPS ON INSERT INTO Persona fechaNacimiento, sexo)

(idPersona,

tipoidentificacion,

nombre,

apellido,

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 TSQL. Hay que indicar cuando se inician inici an (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 Mientr as 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.

CONCURRENCIA, TRANSACCIONES, ACCESOS Y BLOQUEOS. MANEJO DE JMETER. 2.1 Tipos de Concurrencia de Transacciones 



Optimista: Deja realizar re alizar modificaciones modificacione s 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 P ara los datos dato s modificados, realizar un bloqueo blo queo 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 persistidos (commitados).









READ COMMITTED: No dejan leer valores modificados modificad os por otras transacciones no persistidos (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 READ COMMITED. COMMITED. Crea un estado en la base de datos; de esta es ta 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.

2.3 TRANSACCIONES EN SQL SERVER En SQL Server el tipo de concurrencia es pesimista. pesimist a. 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: SNAPSHOT: La base de datos se encuentra con la configuración SET READ_COMMITTED_SNAPSHOT ON. READ COMMITTED: 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 Hibernate, por defecto tiene concurrencia optimista. Pero se puede habilitar concurrencia pesimista. En general, se recomienda el uso del TransactionScope, Transa ctionScope, para determinar el nivel ni vel de aislamiento con TransactionScopeOption. TransactionScopeOpti on.

RENDIMIENTO CON JMETER Se ha permitido desarrollar una herramienta de análisis de resultados similar a la que proporcionan las herramientas comerciales. Las principales princi pales ventajas que aporta son: 









Permite generar un informe de de pruebas de resultados de manera automática automática sin necesidad de tratar los datos en hojas de cálculo. Permite estudiar de manera gráfica 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 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 análisi s para dotar de mayor calidad las pruebas de rendimiento.

Manejo de transacciones y control de concurrencia, JMeter - Práctica.

Para este laboratorio, se Utilizaron parámetros 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 Password: 123 Puerto conexion: 1433 base de datos: Sec_salud  Anexo la pantalla de conexión 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 máquina.

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

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

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

Luego se define la conexión jdbc:

URL BD: jdbc:pc-PC://localh j dbc:pc-PC://localhost:1433;databaseName=Se ost:1433;databaseName=Sec_salud c_salud DRIVER JDBC: com.microsoft.sqlserver.jdbc.SQLServerDriver com.microsoft.sql server.jdbc.SQLServerDriver USUARIO: pc-PC  A continuación continuación se se definen las peticiones peticiones a la la base de datos, datos,

Luego se anexa el componente gráfico:

 Aquí una vez dato el Play en ejecutar, vemos como el grafico comienza 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, resumen, un reporte reporte más numérico numérico que permite verificar varianza varianza de datos y concurrencia.

Otra grafica tipo spline que permite perm ite ver en una secuencia más lineal, la concurrencia de las transacciones medidas por el Jmeter.

 Anexo el monitor de rendimiento rendimiento de Sql server en función, dentro del menú performance tool, programas del Pack de instalación de Sql server, server profile

Para más detalle detalle en el Server Profile, Profile, Menú tools, performance performance monitor.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF