Anda di halaman 1dari 35

GESTIÓN Y SEGURIDAD DE BASES DE DATOS

CÉLIMO RODRÍGUEZ HERRERA

SENA

2019
DISEÑO Y ADMINISTRACIÓN DE UNA BODEGA DE DATOS PARA LA ALCALDÍA SAN
ANTONIO DEL SENA

CÉLIMO RODRÍGUEZ HERRERA

PROYECTO DE GRADO PARA EXPECIALIZACIÓN GESTIÓN Y SEGURIDAD

DE BASES DE DATOS

“Transacciones, bloqueos y control de concurrencia en motor de base de


datos”

SENA

2019
TRANSACCIONES, CONTROL DE LA CONCURRENCIA Y
BLOQUEOS

El control de transacciones concurrentes en una base de datos brinda un eficiente


desempeño del Sistema de Base de Datos, puesto que permite controlar la
ejecución de transacciones que operan en paralelo, accesando a información
compartida y, por lo tanto, interfiriendo potencialmente unas con otras.

Los SGBD son sistemas concurrentes, admiten la ejecución concurrente de


consultas. Por tanto, es necesario:

Modelo de procesos concurrentes para admitir operaciones concurrentes que


preserven la integridad de los datos.

- Transacción

Es la ejecución de ciertas instrucciones de un programa. Puede consistir en varias


operaciones de acceso a la base de datos compartida. Y ●

- Concurrencia

Los sistemas de administración de BD permiten que muchas transacciones


puedan realizarse en una misma base de datos a la vez. Para este sistema se
necesita algún mecanismo de control para que las operaciones simultáneas no
interfieran entre sí.

El control de transacciones concurrentes en una base de datos brinda un eficiente


desempeño del Sistema de Base de Datos, puesto que permite controlar la
ejecución de transacciones que operan en paralelo, accesando a información
compartida y, por lo tanto, interfiriendo potencialmente unas con otras.
Verbigracia

La incidencia del control de concurrencia se aprecia en el siguiente contexto: el


hecho de reservar un asiento en una avión mediante un sistema basado en
aplicaciones web, cuando decenas de personas en el mundo pueden reservarlo
también, nos da una idea de lo importante y crucial que es el control de
concurrencia en un sistema de base de datos a mediana o gran escala.

- ¿Cómo sucede?

Un algoritmo de control de concurrencia asegura que las transacciones se


ejecuten atómicamente controlando la intercalación de transacciones
concurrentes, para dar la ilusión de que las transacciones se ejecutan serialmente,
una después de la otra, sin ninguna intercalación, evitando los conflictos o errores
de la misma.

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

Los cambios de estado ocurren debido a actualizaciones, inserciones y


supresiones de información. Por supuesto, se quiere asegurar que la base de
datos nunca entre en un estado de inconsistencia.

Sin embargo, durante la ejecución de una transacción, la base de datos puede


estar temporalmente en un estado inconsistente.

El punto importante aquí es asegurar que la base de datos regresa a un estado


consistente al fin de la ejecución de una transacción y gestione con la petición.

 Propiedades Fundamentales de una Transacción(ACID)

- Atomicidad

Se refiere al hecho de que una transacción se trata como una unidad de


operación. Por lo tanto, o todas las acciones de la transacción se realizan o
ninguna de ellas se lleva a cabo. La atomicidad requiere que si una transacción
se interrumpe por una falla, sus resultados parciales sean anulados.

- 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

Una transacción en ejecución no puede revelar sus resultados a otras


transacciones concurrentes antes de finalizar. Más aún, si varias transacciones
se ejecutan concurrentemente, los resultados deben ser los mismos que si
ellas se hubieran ejecutado de manera secuencial.

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

- BEGIN TRAN: especifica que va a empezar una transacción.


- COMMIT TRAN: le indica al motor que puede considerar la transacción
completada con éxito.
- ROLLBACK TRAN: indica que se ha alcanzado un fallo y que debe
restablecer la base al punto de integridad

 Estructura de las Transacciones


Usualmente viene dada según el modelo de la transacción:
- Transacciones planas

Consisten en una secuencia de operaciones primitivas encerradas entre las


palabras clave BEGIN y END. Por ejemplo:

BEGIN _TRANSACTION Reservación

…….

END.

- Transacciones Anidadas

Consiste en tener transacciones que dependen de otras, estas transacciones


están incluidas dentro de otras de un nivel superior y se las conoce como
subtransacciones. La transacción de nivel superior puede producir hijos
(subtransacciones) que hagan más fácil la programación del sistema y mejoras
del desempeño.

En las transacciones anidadas las operaciones de una transacción pueden ser


así mismo otras transacciones. Por ejemplo:

BEGIN _TRANSACTION Reservación

…….

BEGIN _TRANSACTION Vuelo …. END.(Vuelo)

……..

BEGIN _TRANSACTION Hotel

……

END

……

END.

 Orden de lectura/Escritura

- Generales

Si las acciones de lectura y escritura pueden ser mezcladas sin ninguna


restricción.
- Restringidas

Si se restringe o impone que un dato debe ser leído antes de que pueda ser
escrito.

- Dos Pasos

Las transacciones son restringidas a que todas las acciones de lectura se


realicen antes de las acciones de escritura.

 Estados de una Transacción

- Transacción Activa: se encuentra en este estado justo después de iniciar su


ejecución.
- Transacción Parcialmente Confirmada: en este punto, se efectúan
diferentes operaciones de verificación para asegurar que la transacción no
interfiera con otras transacciones en ejecución.
- Transacción Confirmada: Ha concluido su ejecución con éxito.
- Transacción Fallida: En este caso, es posible que la transacción deba ser
cancelada.
- Transacción Terminada: indica que la transacción ha abandonado el
sistema.

- Operaciones de una transacción

- Inicio de Transacción: Operación que marca el momento en el que una


transacción comienza a ejecutarse.
- Leer o Escribir: Operaciones de lectura/escritura de elementos de la base
de datos.
- Fin de la Transacción: Se verifica si la transacción debe abortarse por
alguna razón.
- Confirmar (COMMIT): La operación termino con éxito.
- Abortar (ROLLBACK): La transacción termino sin éxito.

En esencia, lo que se persigue con el procesamiento de transacciones es, por


una parte obtener una transparencia adecuada de las acciones concurrentes a
una base de datos y por otra, manejar adecuadamente las fallas que se
puedan presentar en una base de datos.
 Métodos de Control de Concurrencia
Protocolos basados en técnicas de bloqueo

Un bloqueo es una operación usada para restringir las operaciones que se


pueden aplicar sobre la base de datos. Existen varios tipos de bloqueo:

- Bloqueos binarios

Poseen dos valores posibles, bloqueados y desbloqueados. Cada elemento de


la base de datos tiene un bloqueo distinto. El bloqueo señala si una transacción
está en ejecución sobre el elemento o está libre para que se pueda operar con
él.

- Bloqueos de lectura/escritura

Puede tener tres posibles posiciones: libre, bloqueado para lectura, y


bloqueado para escritura. De esta forma, más de una transacción puede tener
un mismo elemento de datos bloqueado para lectura, pero sólo una para
escritura.

- Bloqueo en dos fases: interbloqueo

El interbloqueo se produce cuando una transacción T1 está esperando a algún


elemento que está bloqueado por otra transacción T2. De esta forma, cada
transacción está parada en espera a que otra transacción libere el recurso.

- 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

Especifica la granularidad del bloqueo

● Fila: Fila individual


● Clave: Fila de un índice
● Página: Páginas (8KB)
● Extent: Extensión (grupo de 8 páginas contiguas de datos o índices)
● Table: Tabla completa
● Database: Base de datos completa.

- Modos de bloqueo

Especifica el modo en que se bloquea un elemento

● Compartido: para operaciones sólo de lectura. Se permiten lecturas


concurrentes, pero ninguna actualización.
● Actualización: para operaciones que pueden escribir. Sólo se permite que
una transacción adquiera este bloqueo. Si la transacción modifica datos, se
convierte en exclusivo, en caso contrario en compartido.
● Exclusivo: para operaciones que escriben datos. Sólo se permite que una
transacción adquiera este bloqueo.
● Intención: se usan para establecer una jerarquía de bloqueo. Por ejemplo, si
una transacción necesita bloqueo exclusivo y varias transacciones tienen
bloqueo de intención, no se concede el exclusivo.
* Intención compartida: Bloqueo compartido.
* Intención exclusiva. Bloqueo exclusivo.
● Compartido con intención exclusivo. Algunos bloqueos compartidos y otros
exclusivos.
● Esquema para operaciones del DDL.
● Actualización masiva: en operaciones de actualización masiva.

 Protocolos de Bloqueos

- Protocolo de bloqueo de dos fases


Requisito: todos los bloqueos preceden a los desbloqueos. Primera fase:
bloqueos. Segunda: desbloqueos.

- Protocolos basados en grafos

A menudo es útil observar el conjunto de elementos de datos de la base de


datos como una estructura de grafo. Por ejemplo:

● Organización lógica o física de los elementos.


● Definición de elementos de varios tamaños, donde los grandes engloban a
los pequeños. Ej.: relacional: tupla ⊆ bloque ⊆ relación ⊆ base de datos.
● Control de concurrencia efectivo.
● Se pueden diseñar protocolos que no sean de dos fases pero que aseguren
la secuencialidad.

 Marcas de Tiempo

En un sistema multiproceso, el punto muerto es una situación no deseada que


surge en un entorno de recursos compartidos, donde un proceso espera
indefinidamente un recurso (la memoria, dispositivos de E/S, semáforos,
archivos, etc.) que está en manos de otro proceso.
Los puntos muertos no son saludables para un sistema. En caso de que un
sistema esté atascado en un punto muerto, las transacciones involucradas en
el punto muerto se revierten o reinician.

Para evitar cualquier situación de bloqueo en el sistema, el DBGS (sistema


gestor de base de datos) inspecciona agresivamente todas las operaciones,
donde las transacciones están a punto de ejecutarse. El DBGS inspecciona las
operaciones y analiza si pueden crear una situación de punto muerto
(Deadlock). Si descubre que puede ocurrir una situación de punto muerto,
entonces esa transacción nunca podrá ejecutarse.

Situación: Cuando un proceso espera un evento que nunca se va a dar y el


otro también lo espera

Si se presentan simultáneamente las cuatro siguientes condiciones el sistema


está en Deadlock.
- Exclusión mutua: por lo menos un proceso que tenga otorgado un recurso
en forma exclusiva.
- Uso y espera: Debe existir al menos un proceso que esté haciendo uso de
un recurso y que esté esperando por otros recursos asignados a otros
procesos.
- No interrupción: los recursos no pueden ser retirados al proceso. Si un
proceso hace uso de un recurso no le podrá ser retirado hasta que
voluntariamente el proceso lo libere.
- Espera circular: debe existir un conjunto de procesos {P1.....Pn} tal que P1
espera por un recurso utilizado por P2,......, Pn espera por un recurso
utilizado por P1.

 Prevención de Punto Muerto (Deadlock)

Existen esquemas de prevención de punto muerto que utilizan un mecanismo


de transacciones de orden de marca de tiempo para predeterminar una
situación de punto muerto.

- Esquema de esperar-morir (Wait-die): es una técnica no preventiva para la


prevención de puntos muertos. Cuando la transacción Ti solicita un
elemento de datos actualmente en poder de Tj , Ti solo puede esperar si
tiene una marca de tiempo más pequeña que la de Tj (es decir, Ti es
anterior a Tj), de lo contrario, Ti se revierte (muere)

Verbigracia:

Suponga que la transacción T22, T23, T24 tiene marcas de tiempo 5, 10 y 15


respectivamente. Si T22 solicita un elemento de datos en poder de T 23,
entonces T22 esperará. Si T24 solicita un elemento de datos en poder de T23,
entonces T24 se revertirá.

- Esquema de espera de heridas (Wound-wait): es una técnica preventiva


para la prevención de puntos muertos. Es una contraparte del esquema de
esperar-morir. Cuando la Transacción Ti solicita un elemento de datos
actualmente en poder de Tj, Ti solo puede esperar si tiene una marca de
tiempo más grande que la de Tj, de lo contrario, Tj se revierte (Tj es herido
por Ti)

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.

- Realizar la siguiente petición mediante el comando COMMIT TRANSACTION en


Microsoft SQL Server 2008 en la secretaria de Salud

● Resultado

Auto-attach to process '[2730] [SQL] localhost' on machine 'localhost'


succeeded. The thread 'localhost [52]' (0x1610) has exited with code 0 (0x0).

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

INSERT INTO EPS (ideps, nombre, estadoeps)

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:

SET IDENTITY_INSERT EPS

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

Para que la sintaxis del comando se ejecute le falta agregar: SET


IDENTITY_INSERT [tabla] ON, y estructurar 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)

- Qué sucede al hacer una consulta de todos los datos de la tabla eps si
anteriormente se ejecuta el siguiente comando?
● Resultado

Error que empieza en la línea: 2 del comando -


INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (15,’confisena’,1)
Error en la línea de comandos : 3 Columna : 12
Informe de error -
Error SQL: ORA-01756: quoted string not properly terminated
01756. 00000 - "quoted string not properly terminated"
*Cause:
*Action:

Savepoint creado.

- Ejecutar comando COMMIT

Error que empieza en la línea: 2 del comando -


INSERT INTO EPS (ideps, nombre, estadoeps)
VALUES (15,’confisena’,1)
Error en la línea de comandos : 3 Columna : 12
Informe de error -
Error SQL: ORA-01756: quoted string not properly terminated
01756. 00000 - "quoted string not properly terminated"
*Cause:
*Action:
Confirmación terminada.

Se ha producido un error al guardar los cambios en la tabla "ALCALDIA"."EPS":


Fila 15: ORA-00001: unique constraint (ALCALDIA.SYS_C008230) violated
ORA-06512: at line 1

INSERT INTO "ALCALDIA"."EPS" (IDEPS, NOMBRE, ESTADOEPS) VALUES


('15', 'CONFISENA', '1')
ORA-00001: unique constraint (ALCALDIA.SYS_C008230) violated
ORA-06512: at line 1

Se ha producido un error al guardar los cambios en la tabla "ALCALDIA"."EPS":


Fila 15: ORA-00001: unique constraint (ALCALDIA.SYS_C008230) violated
ORA-06512: at line 1
- En el siguiente cuadro especificar para cada tipo de transacción si es
implícita, explicita o automática.

Script Tipo de Transacción


BEGIN TRANSACTION Explicita
INSERT INTO cliente (cedula,
nombre)
VALUES (1,’sena’)
COMMIT TRANSACTION
INSERT INTO cliente Automática
(cedula, nombre)
VALUES (1,’sena’)
INSERT INTO cliente Explicita
(cedula, nombre)
VALUES (1,’sena’)
COMMIT TRANSACTION

● 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

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.

- Usando la base de datos Secretaria de Salud y ejecutando sp_lock, los


resultados:

Error que empieza en la línea: 1 del comando :


sp_lock
Informe de error -
Comando desconocido
sp_lock (Transact-SQL)
● Razonamiento

sp_lock (Transact-SQL)

+ Sintaxis

sp_lock [ [ @spid1 = ] 'session ID1' ] [ , [@spid2 = ] 'session ID2' ]


[;]

+ Argumentos

[ @spid1 = ] 'session ID1' Es un número de ID de sesión de Motor de base


de datos de sys.dm_exec_sessions para el que el usuario desea bloquear
información. ID1 de sesión es int con un valor predeterminado de NULL.
Ejecute sp_who para obtener información del proceso sobre la sesión. Si no
se especifica la sesión ID1, se muestra información sobre todos los
bloqueos.

[ @spid2 = ] 'session ID2' Es otro número de identificación de sesión del


motor de base de sys.dm_exec_sessions que podrían tener una cerradura
al mismo tiempo que la sesión ID1 y sobre la que el usuario también quiere
información. ID2 de sesión es int con un valor predeterminado de NULL.

+ Valores del código de retorno


0 (éxito)

+ Conjuntos de resultados

El conjunto de resultados sp_lock contiene una fila para cada bloqueo


mantenido por las sesiones especificadas en los parámetros @ spid1 y @
spid2. Si no se especifica @ spid1 ni @ spid2, el conjunto de resultados
informa los bloqueos para todas las sesiones actualmente activas en la
instancia del Motor de base de datos.

- Analizar el siguiente script.

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

Error que empieza en la línea: 1 del comando :


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
Informe de error -
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "PRINT" when expecting one of the following:

:= . ( @ % ;
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
 Laboratorio Jmeter
 Consulta 1

SELECT p.idpersona, p.nombre, p.apellido, e.Nombre,


h.fechaingreso, h.fecharetiro
FROM persona p
INNER JOIN historialpersona h on p.idpersona=h.idpersona
INNER JOIN eps e on e.ideps=h.ideps
ORDER BY p.apellido

Prueba No de Periodo de No de No de Desviación Rendimiento/Minut Media Mediana


No Hilos subida en (s) peticiones muestras o
1 10 10 5 50 0.59 5.6/sec 3 2
2 25 10 5 125 1.18 13.0/sec 1 1
3 50 10 5 250 1.72 25.5/sec 1 1
4 100 10 5 500 1.37 50.6/sec 1 1
5 250 10 5 1750 1.18 49.7 1 1
6 500 10 5 4250 1.26 1.8/sec 1 1
7 1000 10 5 9250 10.10 3.2/sec 2 1
8 1500 10 5 7500 79.27 713.9/sec 34 2
9 2000 10 5 10000 543.67 811.4/sec 479 258
10 3000 10 5 15000 1641.52 849.6/sec 1659 1167
11 4000 10 5 18965 2147.69 854.3/sec 2105 1451

Nombre del hilo: Grupo de Hilos 1-3563 que se rompe o bloquea


 Consulta 2

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;

Prueba No de Periodo de No de No de Desviación Rendimiento/Minut Media Mediana


No Hilos subida en (s) peticiones muestras o
1 10 10 5 50 1.63 5.6/sec 1 1
2 25 10 5 125 1.13 13.0/sec 1 1
3 50 10 5 250 1.11 32.9 1 1
4 100 10 5 1000 1.22 40.8 1 1
5 250 10 5 2500 1.10 51.4 1 1
6 500 10 5 7500 2.44 126 1 1
7 1000 10 5 5000 10.83 499.3/sec 3 1
8 1500 10 5 7500 35.85 714.2/sec 17 2
9 2000 10 5 10000 477.48 837.7/sec 481 357
10 3000 10 5 15000 2058.17 690/sec 1767 843
11 4000 10 5 19760 1199.69 852 1566 1138

- Nombre del hilo: Grupo de Hilos 1-3247 que se rompe o bloquea

- 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

- Conclusión del test


Realizada las pruebas se concluye

1. El sistema en la cual se realiza la prueba (Localhot) responde pero de


manera muy limitada para la dimensión de los usuarios que se utiliza, en
especial cuando se llega a la de 2000 hilos, las desviaciones son abismales
y ni se diga del rendimiento que prácticamente se tomarían varios días para
responder las peticiones, en los gráficos 1 y 2 se manifiesta la deformidad
de la señal, razón que muestra las alteraciones de lo estresado del sistema
frente al test de estrés; en los gráficos 3 y 4 ya se empieza a notar mejor la
uniformidad de la señal, patrón de menos estresado el sistema ante la
prueba.
2. Para corroborar aún más el comportamiento, en las tablas se puede
apreciar las tres pruebas que se realizaron mediante sentencias que
permitieron fatigar el sistema para ver su evolución. Este sistema responde
moderadamente. por ser la constante en las tres pruebas:

No de Periodo de No de No de Desviación Rendimiento/Minuto Media Mediana


Hilos subida en (s) peticiones muestras
25 10 5 125 0.80 13.0/sec 1 1

3. En las tres pruebas, el hilo se rompió cuando la estresamos a 4000 hilos;


en la primera prueba me toco reiniciar el sistema ya que lo bloqueo
totalmente, en especial la herramienta Jmeter; para la segunda prueba
como lo muestra la gráfica después de dos horas, la herramienta Jmeter no
se estabiliza, y la gráfica muestra notablemente, como el patrón hilo se
rompe y se corrompe, la gráfica 7 muestra la total utilización de la memoria
del sistema; y por último y como consigna de la experiencia de dos prueba,
la numero tres no se completó en su totalidad, precisamente para no
estresar más el sistema.
4. La herramienta nos muestra que el porcentaje de error se debe a que
jmeter no puede levantar el siguiente archivo:

org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender

5. El rompimiento del hilo se debe a que Jmeter no puede levantar en


determinado tiempo el siguiente driver, así como lo muestra el
muestreador de Jmeter:
6. De acuerdo al corolario anterior se puede concluir que la herramienta es
muy eficiente en el sentido de poder estresar el sistema para poder
encontrar cuellos de botella del mismo, ya que nos identifica el corazón del
problema
7. Estas pruebas y de acuerdo a lo visto en los resultados se concluye que
esta pruebas hay que realizarla en un espacio tiempo fuera del contexto
laboral del sistema ya que como se evidencio el sistema colapsa si hay
cuellos de botella trayendo consecuencias económicas y de reputación
(Good will), y su estabilización demanda horas/hombre para restablecer su
normalidad.

Anda mungkin juga menyukai