SENA
2019
DISEÑO Y ADMINISTRACIÓN DE UNA BODEGA DE DATOS PARA LA ALCALDÍA SAN
ANTONIO DEL SENA
DE BASES DE DATOS
SENA
2019
TRANSACCIONES, CONTROL DE LA CONCURRENCIA Y
BLOQUEOS
- Transacción
- Concurrencia
- ¿Cómo sucede?
- Consistencia
Una base de datos está en un estado consistente si obedece y mantiene todas las
restricciones de integridad (significa que cuando un registro en una tabla haga
referencia a un registro en otra tabla, el registro correspondientes debe existir)
definidas sobre ella y resuelva la petición de manera consistente.
- Atomicidad
- Consistencia
La consistencia de una transacción es simplemente su correctitud. En otras
palabras, una transacción es un programa correcto que lleva a la base de
datos de un estado consistente a otro con la misma característica. Debido a
esto, las transacciones no violan las restricciones de integridad de una base de
datos.
- Aislamiento
- Permanencia
Es la propiedad de las transacciones que asegura que una vez que una
transacción finaliza exitosamente, sus resultados son permanentes y no
pueden ser borrados de la base de datos por alguna falla posterior.
Por lo tanto, los sistemas manejadores de base de datos aseguran que los
resultados de una transacción sobrevivirán a fallas del sistema. Esta propiedad
motiva el aspecto de recuperación de base de datos, el cual trata sobre cómo
recuperar la base de datos a un estado consistente donde todas las acciones
que han finalizado con éxito queden reflejadas en la base.
Manejo de Transacciones
Para esto, el lenguaje de consulta de datos SQL (Structured Query Language),
provee los mecanismos para especificar que un conjunto de acciones deben
constituir una transacción.
…….
END.
- Transacciones Anidadas
…….
……..
……
END
……
END.
Orden de lectura/Escritura
- Generales
Si se restringe o impone que un dato debe ser leído antes de que pueda ser
escrito.
- Dos Pasos
- Bloqueos binarios
- Bloqueos de lectura/escritura
- Espera indefinida
● Exclusión mutua
Cada elemento está bloqueado o está libre por una transacción.
● Retención y espera
Una transacción que ya ha bloqueado elementos puede solicitar un elemento
adicional, y esperar que se le asigne, sin habilitar ninguno de los elementos
anteriores.
● No apropiación
La transacción sólo puede liberar un elemento que tenga asignado; no se lo
puede quitar a otra transacción que tenga mayor prioridad.
● Espera circular
Existe una cadena circular, compuesta por dos transacciones o más, y otros
tantos elementos intercalados, de manera que cada proceso está esperando
que se le asigne un elemento, el cual, a su vez, está asignado al siguiente
proceso de la cadena.
● Bloqueo mutuo o deadlock
Un proceso se encuentra en estado de deadlock si está esperando por un
suceso que no ocurrirá nunca.
- Niveles de bloqueo
- Modos de bloqueo
Protocolos de Bloqueos
Marcas de Tiempo
Verbigracia:
Verbigracia:
Suponga que las Transacciones T22, T23, T24 tienen marcas de tiempo 5, 10 y
15 respectivamente. Si T22 solicita un elemento de datos en poder de T 23,
entonces el elemento de datos será reemplazado por T23 y T23 se revertirá. Si
T24 solicita un elemento de datos en poder de T23, entonces T24 esperará.
Practica
- El rendimiento de un servidor
Una supervisión eficaz implica tomar reportes periódicos 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 2008 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.
● Resultado
The program '[2730] [SQL] localhost: localhost' has exited with code 0 (0x0).
Este comando como tal 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
VALUES (15,’confisena’,1)
● Resultado
Sale un error:
Cannot insert explicit value for identity column in table 'EPS' when
IDENTITY_INSERT is set to OFF
SQL server no permite insertar datos a llaves primarias de forma normal: hay
que utilizar el comando pertinente para que permita insertar datos de forma de
inserción explicita en la tabla a una pk: el comando a utilizar es:
BEGIN TRANSACTION
SET IDENTITY_INSERT EPS ON
INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (15,'confisena',1)
BEGIN TRANSACTION
INSERT INTO persona (idpersona, tipodeidentificacion,
nombre, apellido, fechaNacimiento, sexo)
VALUES (1112548, 1, ‘Pedro’, ‘Garcia’, 1982-01-27, ’M’)
INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (16,’confinacional’,4)
● Resultado
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)
- Qué sucede al hacer una consulta de todos los datos de la tabla eps si
anteriormente se ejecuta el siguiente comando?
● Resultado
Savepoint creado.
● Transacciones explícitas
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 conjunta de transacciones
dentro de la misma
● Transacciones automática
sp_lock (Transact-SQL)
+ Sintaxis
+ Argumentos
+ Conjuntos de resultados
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 actualización’
SELECT * FROM EPS WHERE ideps = 1
PRINT ‘Transacciones Activas’
PRINT @@TRANCOUNT
SELECT * FROM EPS
PRINT ‘Identificador de bloqueo‘
SELECT @@spid
● Resultado
:= . ( @ % ;
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Laboratorio Jmeter
Consulta 1
BEGIN;
SELECT e.nombre, t.descripcion, s.detalle, s.valor
FROM eps e
INNER JOIN servicioeps s on e.ideps=s.ideps
INNER JOIN tipoServicio t on s.idtiposervicio=t.idtiposervicio
ORDER BY e.nombre
COMMIT;
- Consulta 3:
BEGIN;
SELECT p.idpersona, p.nombre, p.apellido, t.descripcion
FROM persona p
INNER JOIN historialpersona h ON p.idpersona=h.idpersona
INNER JOIN tipoafiliado t ON h.tipoafiliado=t.idtipoafiliado
ORDER BY t.descripcion;
COMMIT;
Prueba No de Periodo de No de No de Desviación Rendimiento/Minuto Media Mediana
No Hilos subida en (s) peticiones muestras
1 10 10 5 50 0.81 5.5/sec 1 2
2 25 10 5 125 0.80 13.0/sec 1 1
3 50 10 5 250 0.63 25.5/sec 1 1
4 100 10 5 500 0.88 50.5/sec 1 1
5 250 10 5 1250 1 125.5/sec 0 1
6 500 10 5 2500 1.23 250.4/sec 0 1
7 1000 10 5 5000 1.96 500.3/sec 1 1
8 1500 10 5 7500 7.48 714.1/sec 3 1
9 2000 10 5 10000 186.50 978.4/sec 180 129
10 3000 10 5 15000 1281.88 949.4/sec 1279 949
11 4000 10 5
Grafico 1
Grafico 2
Grafico 3
Grafico 4
Grafico 5
Gráfico 6
Grafico 7
org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender