Está en la página 1de 14

Instituto tecnológico de Acapulco

Asignatura: Taller de base de datos


Semestre:
Equipo 3:
Palacios Pérez Felicia Amayrani
N°control:20321155
RAMOS PÉREZ GUADALUPE INÉS
17320952
Contenido
Introducción ........................................................................................................................................ 3
Definición de concurrencia ................................................................................................................. 4
4.1 Conceptos...................................................................................................................................... 4
4.2 Propiedades de las transacciones ................................................................................................. 4
4.3 Grados de consistencia ................................................................................................................. 5
4.4 Niveles de aislamiento .................................................................................................................. 6
4.5 Reversión de confirmación............................................................................................................ 7
Efectos de lectura................................................................................................................................ 8
Lectura sucia........................................................................................................................................ 8
Lecturas no repetibles ......................................................................................................................... 9
Lecturas fantasmas ........................................................................................................................... 11
Linkografía ......................................................................................................................................... 14
Introducción
Acuerdo se refiere al hecho de que muchas transacciones pueden acceder a la misma base de
datos al mismo tiempo por el sistema de gestión de la base de datos.

Si varios usuarios intentan cambiar los datos al mismo tiempo, es necesario establecer algunos
tipos de control para que estos cambios del usuario no interfieran con otras cosas. Este sistema se
llama control de consentimiento.

En este informe, puede ver algunos de los problemas que surgen cuando el consentimiento no se
controla y algunos de los mecanismos de bloqueo que pueden administrar el consentimiento de la
transacción. De esta manera, el sistema de control simultáneo debe garantizar la consistencia de
la transacción ejecutada al mismo tiempo.
Definición de concurrencia
La concurrencia de bases de datos es la capacidad de una base de datos para permitir que
varios usuarios afecten a varias transacciones. Esta es una de las principales propiedades
que separa una base de datos de otras formas de almacenamiento de datos, como las
hojas de cálculo.

La capacidad de ofrecer simultaneidad es exclusiva de las bases de datos.

Los problemas causados por la concurrencia de la base de datos son incluso más
importantes que la capacidad de admitir transacciones concurrentes.

Por ejemplo, cuando un usuario está cambiando datos, pero aún no ha guardado
(confirmado) esos datos, entonces la base de datos no debe permitir que otros usuarios
que consultan los mismos datos vean los datos cambiados y no guardados. En cambio, el
usuario solo debe ver los datos originales.

4.1 Conceptos

Transaction

Una transacción es una unidad de la ejecución de un programa. Puede consistir en varias


operaciones de acceso a la base de datos.Está delimitada por constructoras como BEGIN
TRANSACTION y END TRANSACTION.

4.2 Propiedades de las transacciones


Atomicidad

Es la propiedad de las transacciones que permite observarlas como operaciones atómicas


(ocurren totalmente o no ocurren).

Consistencia

La ejecución aislada de la transacción conserva la consistencia de la base de datos.

Aislamiento

Es la lógica adicional que se le agrega al programa que accede a los datos para su
funcionamiento correcto.
4.3 Grados de consistencia
Consistencia

Es un término más amplio que el de integridad. Podría definirse como la coherencia entre
todos los datos de la base de datos.

Una transacción finalizada (confirmada parcialmente) puede no confirmarse


definitivamente (consistencia).

La ejecución de una transacción debe conducir a un estado de la base de datos


consistente (que cumple todas las restricciones de integridad definidas).

Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha


efectuado en la base de datos.

Si se anula los cambios que ha efectuado son deshechos.

Una transacción que termina con éxito se dice que está comprometida (commited).

Estados de una transacción

En cualquier momento una transacción sólo puede estar en uno de los siguientes estados.

Activa

El estado inicial, la transacción permanece en este estado durante su ejecución.

Parcialmente comprometida (Uncommited)

Después de ejecutarse la ultima transacción.

Fallida (Failed)

Tras descubrir que no se puede continuar la ejecución normal.

Abortada (Rolled Back): Después de haber retrocedido la transacción y restablecido la


base de datos a su estado anterior al comienzo de la transacción.
4.4 Niveles de aislamiento

Aislamiento

Es la lógica adicional que se le agrega al programa que accede a los datos para su
funcionamiento correcto.

Niveles de aislamiento

Es el grado en que se aísla una transacción de las modificaciones de recursos o datos


realizadas por otras transacciones.

Antes de entrar a los NIVELES DE AISLAMIENTO debemos comprender lo que son los
EFECTOS DE LECTURA, estos son casos en donde la transacción A lee datos que pudieron
haber sido modificados por la transacción B, existen 3 tipos diferentes.

Lecturas sucias: Ocurre cuando se le permite a una transacción la lectura de una fila que
ha sido modificada por otra transacción concurrente pero todavía no ha sido cometida.

Lecturas no repetibles: Una lectura no repetible ocurre cuando en el curso de una


transacción una fila se lee dos veces y los valores no coinciden.

Lecturas fantasmas: Ocurre cuando, durante una transacción, se ejecutan dos consultas
idénticas, y los resultados de la segunda son distintos de los de la primera.

Lectura no confirmada: Este es el nivel de aislamiento mas bajo.

Lectura confirmada:

En esta es posible que ocurran LECTURAS NO REPETIBLES y LECTURAS FANTASMA, pero


evita que ocurran LECTURAS SUCIAS.

Lectura repetible:

En esta pueden ocurrir LECTURAS FANTASMA pero evita que ocurran LECTURAS SUCIAS y
LECTURAS NO REPETIBLES.
Serializable:

Este es el nivel de aislamiento mas alto.Evita por completo las LECTURAS SUCIAS, las
LECTURAS NO REPETIBLES y las LECTURAS FANTASMA.

4.5 Reversión de confirmación


Comprometerse

Esta instrucción de SQL se utiliza para confirmar como permanentes las modificaciones
realizadas en una 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 (.ldf), que gracias a este
es posible revertir los cambios si fuera necesario.
Transacciones explícitas

Este tipo de transacciones son las que se definen en el código y hay que indicar cuándo se
inicia con BEGIN TRANSACTION y cuándo finaliza COMMIT TRANSATION.

Retroceder

Es una operación que devuelve a la base de datos a algún estado anterior. Los Rollbacks
son importantes para la integridad de la base de datos, una causa de que significan que la
base de datos puede ser restaurada a una copia limpia después incluso de que se han
realizado errores.

Efectos de lectura

Los estándares ANSI/ISO SQL 92 se refieren a tres efectos de lectura diferentes al leer
datos que pueden haber cambiado la transacción 2 por la transacción 1.

A continuación, la segunda transacción ejecuta la consulta 2 y la comete. Finalmente, la


primera transacción ejecuta la consulta 1 nuevamente.

Lectura sucia

La lectura sucia ocurre al leer una fila, que fue cambiada por otra transacción simultánea,
se permitió, pero aún no se ha cometido.
Las lecturas sucias funcionan similar a las lecturas imparables; Sin embargo, la segunda
transacción no debe hacerse para que el primero dé otro resultado. Lo único que se puede
prevenir en el nivel de aislamiento, no indicaciones dedicadas, es que las actualizaciones
aparecen en el desorden como resultado; Es decir, las primeras actualizaciones siempre
aparecerán hasta las actualizaciones posteriores.

En el ejemplo, la transacción 2 cambia la línea, pero no realiza cambios. Transacción 1


luego lea los datos sin completar. Si la transacción 2 cancela sus cambios ahora (ya está
leído por la transacción 1) o realiza otros cambios, entonces los datos que se restaurarán
por la transacción 1 serán incorrectos.

Lecturas no repetibles

Se produce un valor medido no repetible si una línea se lee dos veces en el curso de una
transacción y los valores no coinciden.

El efecto de valor medido no repetible puede ocurrir en una coincidencia debido a


bloqueos si no se realizan en caso de selección o si los bloques se liberan tan pronto como
se haya completado el proceso seleccionado. Si se usa el método MVCC, los valores de
medición repetibles no pueden ocurrir si el requisito que se relaja al observar una
transacción afectada por un conflicto.
En este ejemplo, la transacción 2 obliga correctamente, lo que significa que sus cambios
en la línea con ID 1 deberían volverse visibles. Sin embargo, la Transacción 1 ya ha leído un
valor diferente para la edad en esta línea. El SGBDR debe devolver el valor anterior en los
niveles de aislamiento serializables y repetibles. Con Read Engaged and Lead Uncombined,
el SGBDR debería devolver el nuevo valor. Esta es una lectura no repetible.

Hay dos estrategias básicas para prevenir lecturas no repetidas. El primero es retrasar la
ejecución de la transacción 2 hasta que la transacción 1 se cometió o se invirtió. Este
método se usa con bloqueos y corresponde a la ejecución de la serie T1 T2. La ejecución
en serie no muestra efectos de los valores medidos no repetibles.

La otra estrategia utilizada en MVCC primero debe confirmar la transacción 2, lo que


permite un mejor acuerdo. La transacción 1, que comenzó antes de la transacción 2, debe
continuar funcionando en una versión anterior de la base de datos, una instantánea del
momento en que comenzó. En la Transacción 1, el SGBDR intenta ilustrar si el resultado de
la inspección 1 de la T1, T2 sería equivalente. Si es así, la transacción 1 podría continuar.
En este caso, la transacción 1 fallaría y debería revertirse.

Usando el control competitivo a través de bloqueos, la línea con ID 1 debe bloquearse en


el nivel de aislamiento repetible, que bloquea o decepcionó la consulta 2 a la transacción
1. La consulta 1 se lleva a cabo por segunda vez en el modo de lectura comprometida, la
edad ha cambiado.
Usando MVCC, ambas consultas seleccionadas consulte una instantánea de la base de
datos registrada al comienzo de la transacción 1. Por lo tanto, devuelva los mismos datos.
Sin embargo, si la Transacción 1 intenta actualizar la misma línea, se produciría una falla
de serialización y la transacción 1 se vería obligada a deshacerse.

En cada consulta, la base de datos registrada al comienzo de la consulta ve la base de


datos registrada por el líder. Por lo tanto, todos ven datos diferentes en la línea
actualizada. La falla de serialización no puede ocurrir en este modo (ya que no se da una
promesa de serialización), y la transacción 1 no debe establecerse nuevamente.

Lecturas fantasmas

La lectura fantasmal ocurre cuando se realizan dos consultas idénticas durante la transacción, y los
resultados del segundo no son iguales a los resultados del primero.

Esto puede suceder cuando, cuando se realiza la elección de elección, el rango del rango no se
realiza ... dónde.

Una anomalía de indicaciones fantasmales es un caso específico de indicaciones no calificadas


cuando la transacción 1 repite la consulta limitada en el rango de elección ... donde, entre ambas
operaciones, la transacción 2 crea (es decir, insertar) nuevas líneas (en la misma tabla), que esta
incluido
Tenga en cuenta que la transacción 1 ejecutará la misma consulta dos veces. Si se mantiene el
nivel más alto, los resultados de ambas consultas coinciden (esto es lo que sucede). De hecho, se
requiere para una base de datos que opera a un nivel de separación que se puede serializar. Sin
embargo, si el nivel de aislamiento es bajo, puede obtener resultados diferentes.

En el nivel de serialización, la consulta 1 bloquea todos los registros entre 10 y 30, y la consulta 2
se bloquea hasta que se comete la transacción. En el modo de lectura legible, el alcance de 10 a 30
se bloquea y se puede insertar, y la segunda ejecución en la consulta 1 incluye una nueva línea.
Ejemplos

--Transaction--
create database unidad4;
declare @valor int =0;
while @valor < 10
begin
print 'el valor es' + convert(char(2), @valor)
set @valor = @valor + 1
if @valor =10
break
print 'el siclo continua'
end
print 'el codigo (script) continua'
Linkografía

https://techinfo.wiki/concurrencia-de-la-base-de-datos/
https://sites.google.com/a/tectijuana.edu.mx/2016_08_tbd_8/4-seguridad/4-5-vistas
https://www.studocu.com/es-mx/document/instituto-tecnologico-de-acapulco/taller-de-
base-de-datos/concurrencia/30095645
https://www.studocu.com/es-mx/document/instituto-tecnologico-de-
villahermosa/fundamento-de-base-de-datos/actividad-1-unidad-4/11165474
https://pdfcoffee.com/unidad-4-concurrencia-5-pdf-free.html
https://es.wikipedia.org/wiki/Aislamiento_(ACID)#Lecturas_repetibles_(Repeatable_reads
)

También podría gustarte