Está en la página 1de 3

Unidad 4 CONCURRENCIA

TEMAS:

I. Conceptos
II. Propiedades de las transacciones
III. Grados de consistencia
IV. Nivles de aislamiento
V. Commit y rollback

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

Las transacciones sirven para asegurar la consistencia de la información, asegurando que un


conjunto de sentencias se ejecuten correctamente, o no se ejecuten.

DENTRO DE SUS PROPIEDADES MAS IMPORTANTES TENEMOS:

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.

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

GRADOS DE INCONSISTENCIA

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 TRANSACCION: En cualquier momento una transacción sólo puede


estar en uno de los siguientes estados.

ACTIVA (Active): 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.

NIVELES DE AISLAMIENTO

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

*LECTURA NO CONFIRMADA: En esta es posible que ocurran LECTURAS SUCIAS, la


LECTURAS NO REPETIBLES y LECTURAS FANTASMA.
*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.

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.

1. 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.
2.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.
3.LECTURAS FANTASMA: 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.

SERIALIZABLE: Evita por completo las LECTURAS SUCIAS, las LECTURAS NO


REPETIBLES y las LECTURAS FANTASMA

COMMIT: Esta instrucción de SQL se utiliza para confirmar como permanentes las
modificaciones realizadas en una transacción.
Las transacciones explícitas son las que se definen en el código y hay que indicar cuando se
inicia con BEGIN TRANSACTION y cuando finaliza COMMIT TRANSATION.

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

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 fuese
necesario.
EJEMPLO:

START TRANSACTION;
INSERT INTO alumno (id_matricula, nombre, carrera)
VALUES (1,JAIME,2);
INSERT INTO profesor (id_profesor, nombre, perfirl, materia)
VALUES (6, MARIO, 5, 234);
rollback;
Commit;

Nota:
a. Las instrucciones se pueden desarrollar por partes por ejemplo:
START TRANSACTION;
INSERT INTO alumno (id_matricula, nombre, carrera)
VALUES (1,JAIME,2);
Con esto nos aseguramos que que se realizaran cambio que
serán permanentes hasta que se ejecute la instrucción commit.

b. Cuando se ejecuta el conjunto de instrucciones y se aplica la


instrucción rollback, se deshace la inserción a las tables antes
aplicadas.