Sie sind auf Seite 1von 19

2019

MANEJO DE TRANSACIONES,
BLOQUEOS Y CONTROL DE
CONCURRENCIA EN UN
MOTOR DE BASE DE DATOS
ESPECIFICO
GESTION Y SEGURIDAD DE BASE DE
DATOS

YASMIN ROCIO NUÑEZ PADILLA


SENA
08/10/2019
1

INTRODUCCION

Las Bases de datos: Almacenan y recuperan cantidades masivas de datos estructurados.

Proveen un mecanismo para definir información estructurada y un lenguaje de consulta y

modificación de la misma (generalmente SQL).

Los detalles del almacenamiento no necesitan ser conocidos por el usuario: la base de datos

maneja la correspondencia entre los registros u objetos abstractos del usuario y su disposición

en el medio físico.

Cada base de datos actúa como un manejador de recursos y de ese modo provee operaciones

ACID sobre sus datos. También provee un conjunto de herramientas para visualizar los datos

y generar reportes.
2

1. OBJETIVOS

1.1 Objetivo General

Ejecutar la fase de planeación de migración de datos, descrita en el respectivo Plan de

migración, lo cual permitirá la aplicación del procedimiento de extracción,

transformación, limpieza y carga de datos así como la validación de la consistencia de

los datos migrados.

1.2 Objetivos Específicos

 Aprender a Optimizar una base de datos con SQLserver.

 Conocer algunas herramientas que ayudan a migrar los datos de un SMBD a otro.

 Ejecutar del Procedimiento de Extracción, Transformación, Limpieza y Carga de

los datos

 Probar y validar de la migración en la base de datos en SQL Server

Manejo de transacciones, bloqueos y control de concurrencia en SqlServer


3

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 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) '

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:
4

BEGIN TRANSACTION

SET IDENTITY_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, 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)
5

VALUES (111245548, 1, 'Pedro', 'Garcia', 1982-01-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
6

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.

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:

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
7

bloqueo activo. Clic derecho en su bd -> informe -> informe estándar -> Todas las

transacciones de bloqueo.
8

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. Impendiendo 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 omitido por otra transacción durante la ejecución de

la propia; obtiene valores diferentes.


9

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 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
10

En SQL AZURE solo existe READ COMMITTED SNAPSHOT. No se puede desactivar

con la configuración SET READ_COMMITTED_SNAPSHOT OFF.

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, para determinar el nivel de

aislamiento con TransactionScopeOption.

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.


11

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.

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

Password: 123

Puerto conexion: 1433

base de datos: 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 máquina.


12

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:


13

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://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.


14
15

Luego se anexa el componente gráfico:


16

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 más numérico que permite verificar varianza de datos y

concurrencia.
17

Otra grafica tipo spline que permite ver en una secuencia más 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 Pack de instalación de Sql server, server profile

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


18

CONCLUSIÓN

De acuerdo con el diseño lógico presentado, podemos concluir que se pueden suplir las

necesidad de la organización en este caso la alcaldía de san Antonio del Sena cumpliendo

con la labor de ayudar a los funcionarios municipales para que brinden un mejor servicio a

las personas del pueblo ya que se pueden obtener un fácil acceso a la información,

confiabilidad en los datos de cada una de las secretarias y estas podrán disponer

independientemente de otras sus propios recursos según lo que planificamos en trabajos

anteriores. Mantener siempre la información protegida y respaldada ante cualquier

eventualidad, así como la conservación de la información

Das könnte Ihnen auch gefallen