Unidad 5 Trans Acci Ones

31
UNIDAD IV TRANSACCIONES MTI EDUARDO VAZQUEZ ZAYAS MTI EDUARDO VAZQUEZ ZAYAS

Transcript of Unidad 5 Trans Acci Ones

Page 1: Unidad 5 Trans Acci Ones

UNIDAD IV TRANSACCIONES

MTI EDUARDO VAZQUEZ ZAYAS

MTI EDUARDO VAZQUEZ ZAYAS

Page 2: Unidad 5 Trans Acci Ones

DEFINICION DE TRANSACCION En informática, se llama transacción a la operación que

modifica el estado de una base de datos, sin que los datosen sí mismos pierdan consistencia alguna.

Las transacciones fueron originalmente desarrolladaspara ser utilizadas dentro de los sistemas de base dedatos, donde se usaba para ayudar en el mantenimientode los datos de las aplicaciones y que dependían de laconsistencia de la información almacenada.

MTI EDUARDO VAZQUEZ ZAYAS

Page 3: Unidad 5 Trans Acci Ones

CONTINUACION. DEFINICION DE TRANSACCION

La palabra transacción describe una secuencia de operacionescon uno o más recursos que transforman su estado actual enun nuevo estado de consistencia.

Se quiere asegurar que la base de datos no entre en un estadode inconsistencia, pero durante la ejecución de unatransacción, la base de datos puede estar temporalmente enun estado inconsistente. Lo importante aquí es asegurar quela base de datos vuelva aun estado consistente al concluir laejecución de una transacción.

MTI EDUARDO VAZQUEZ ZAYAS

Page 4: Unidad 5 Trans Acci Ones

PROPIEDADES DE LAS TRANSACCIONES ACID

Atomicidad:

Una transacción es tratada como una unidad de operación. Por lo tantotodas las acciones de la transacción se llevan a cabo o ninguna de ellas serealiza .La atomicidad requiere que si una transacción se interrumpe poruna falla, sus resultados parciales deben ser deshechos. Se efectúan todaslas transacciones, pero en caso de fallas no se realiza ninguna. Unatransacción debe concluir comprometida o abortada. En el caso delcompromiso se instalan todas las actualizaciones y en el aborto sedescartan todas las actualizaciones.

En pocas palabras todas las operaciones se realizan o ninguna.

MTI EDUARDO VAZQUEZ ZAYAS

Page 5: Unidad 5 Trans Acci Ones

Consistencia :

Una transacción es un programa correcto que lleva labase de datos de un estado consistente a otro con lamisma característica. Gracias a esto, las transacciones noviolan las reglas de integridad de una base de datos.

Los invariantes de la BD se conservan antes y después dela ejecución de la transacción.

MTI EDUARDO VAZQUEZ ZAYAS

Page 6: Unidad 5 Trans Acci Ones

Aislamiento :

Durante la ejecución de una transacción, esta no debe revelarsus resultados a otras transacciones concurrentes antes de sucompromiso. Si varias transacciones se ejecutanconcurrentemente, los resultados deben ser los mismos quesi ellas se hubieran ejecutado en forma secuencial(Seriabilidad). La Seriabilidad consiste en asegurarse que loscambios siguen un orden adecuado.

No importa que se ejecuten transacciones concurrentemente,desde el punto de vista del usuario lucen secuenciales (unasno afectan la ejecución de las otras)

MTI EDUARDO VAZQUEZ ZAYAS

Page 7: Unidad 5 Trans Acci Ones

Durabilidad :

Es la propiedad de las transacciones que asegura que unavez que una transacción realiza su compromiso, susresultados son permanentes y no pueden ser borrados dela base de datos, se asegura que los resultados de unatransacción sobrevivirán a fallas del sistema.

Los cambios comprometidos perduran en el tiempo.

MTI EDUARDO VAZQUEZ ZAYAS

Page 8: Unidad 5 Trans Acci Ones

INSTRUCCIONES COMMIT Y ROLLBACK

Ventajas de las sentencias COMMIT y ROLLBACK

Asegurar la consistencia de datos.

Ver previamente los cambios de los datos antes de hacerlos permanentes.

Agrupar operaciones lógicamente relacionadas.

Control explicito del control de transacciones

Se puede controlar la lógica de transacciones con el usode las sentencias COMMIT, SAVEPOINT y ROLLBACK.

MTI EDUARDO VAZQUEZ ZAYAS

Page 9: Unidad 5 Trans Acci Ones

INSTRUCCIONES COMMIT Y ROLLBACK

MTI EDUARDO VAZQUEZ ZAYAS

Page 10: Unidad 5 Trans Acci Ones

Para asegurarnos que tenemos soporte para el tipo de

tablas InnoDB podemos ejecutar la siguiente sentencia:

MTI EDUARDO VAZQUEZ ZAYAS

EJEMPLO:

Page 11: Unidad 5 Trans Acci Ones

CONSISTENCIA Y AISLAMIENTO

MTI EDUARDO VAZQUEZ ZAYAS

La consistencia y el grado de aislamiento se puede ver mediante el comando:

SELECT @@global.tx_isolation;SELECT @@tx_isolation;

Page 12: Unidad 5 Trans Acci Ones

Por default las tablas que creamos son repeatable-read con estemétodo podemos hacer varios selects sobre la misma lectura y todosserian consistentes entre si.Podemos cambiar los niveles de aislamiento según sean las necesidades de accesibilidad.

MTI EDUARDO VAZQUEZ ZAYAS

SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL{READ UNCOMMITTED | READ COMMITTED| REPEATABLE READ | SERIALIZABLE}

Page 13: Unidad 5 Trans Acci Ones

MTI EDUARDO VAZQUEZ ZAYAS

READ UNCOMMITTEDLas sentencias SELECT son ejecutadas sin realizar bloqueos, pero podría usarseuna versión anterior de un registro. Por lo tanto, las lecturas no son consistentesal usar este nivel de aislamiento. Esto también se denomina “lectura sucia” (dirtyread). En otro caso, este nivel de aislamiento funciona igual que READCOMMITTED.

READ COMMITTEDTodas las sentencias SELECT… FOR UPDATE y SELECT… LOCK IN SHAREMODE bloquean solamente los registros de índice, no los espacios vacíos que lospreceden, por lo tanto se permite la libre inserción de nuevos registros junto a losbloqueados. Las sentencias UPDATE and DELETE que empleen un índice únicocon una condición de búsqueda única bloquean solamente el registro de índicehallado, no el espacio que lo precede. En las sentencias UPDATE y DELETE queactúan sobre rangos de registros, InnoDB debe bloquear los espacios vacíos ybloquear las inserciones de otros usuarios en los espacios vacíos que hay dentrodel rango. Esto es necesario debido a que las “filas fantasma” deben serbloqueadas para que funcionen la replicación y recuperación en MySQL.

Page 14: Unidad 5 Trans Acci Ones

MTI EDUARDO VAZQUEZ ZAYAS

REPEATABLE READEste es el nivel de aislamiento predeterminado de InnoDB. Las sentencias SELECT… FOR UPDATE, SELECT… LOCK IN SHARE MODE, UPDATE, y DELETE que utilicen un índice único con una condición de búsqueda única, bloquean solamente el registro de índice hallado, no el espacio vacío que lo precede.Con otras condiciones de búsqueda, estas operaciones emplean bloqueo de clavesiguiente (next-key), bloqueando el rango de índice cubierto por la operaciónincluyendo los espacios vacíos, y bloqueando las nuevas inserciones por parte deotros usuarios.

SERIALIZABLEEste nivel es similar a REPEATABLE READ, pero todas las sentencias SELECT son convertidas implícitamente a SELECT… LOCK IN SHARE MODE

Page 15: Unidad 5 Trans Acci Ones

Set {session|global} transaction isolation level READ UNCOMMITEDMTI EDUARDO VAZQUEZ ZAYAS

Page 16: Unidad 5 Trans Acci Ones

También conocido como “dirty read”

En lo anterior no se pueden hacer consultas consistentes bajo este nivelsu contraparte seria READ COMMITTED

Set {session|global} transaction isolation level READ COMMITEDMTI EDUARDO VAZQUEZ ZAYAS

Page 17: Unidad 5 Trans Acci Ones

El método anterior es muy usado ya que sus lecturas son muyconsistente y permite hacer varias lecturas simultaneas y permitiendoleer y escribir dentro de su propia copia

MTI EDUARDO VAZQUEZ ZAYAS

Page 18: Unidad 5 Trans Acci Ones

MTI EDUARDO VAZQUEZ ZAYAS

Page 19: Unidad 5 Trans Acci Ones

Inicio de Transacción . Con BEGIN; o START TRANSACTION;

MTI EDUARDO VAZQUEZ ZAYAS

Page 20: Unidad 5 Trans Acci Ones

Si en este momento insertamos un ROLLBACK , la transacción no se completara y no se guardaran los cambios.

MTI EDUARDO VAZQUEZ ZAYAS

Page 21: Unidad 5 Trans Acci Ones

Ahora vamos a ver que sucede si perdemos la conexión al servidor antes de que la transacción sea completada

MTI EDUARDO VAZQUEZ ZAYAS

Page 22: Unidad 5 Trans Acci Ones

Cuando obtenemos de nuevo la conexión, podemos verificar que el registro no se insertó el dato, ya que la transacción no fue completada.

MTI EDUARDO VAZQUEZ ZAYAS

La atomicidad requiere que si una transacción se interrumpe por una falla, sus resultados parciales sean anulados.

Page 23: Unidad 5 Trans Acci Ones

Ahora utilizamos la instrucción commit

MTI EDUARDO VAZQUEZ ZAYAS

Page 24: Unidad 5 Trans Acci Ones

Consistencia La consistencia de una transacción es simplemente su correctitud.

MTI EDUARDO VAZQUEZ ZAYAS

Page 25: Unidad 5 Trans Acci Ones

Ejemplo 2

MTI EDUARDO VAZQUEZ ZAYAS

SAVEPOINTROLLBACK TO SAVEPOINT

SAVEPOINT [identifier]

ROLLBACK TO SAVEPOINT [identifier]

Page 26: Unidad 5 Trans Acci Ones

use depa;BEGIN;

select * from project;SAVEPOINT PRINCIPAL;

INSERT INTO PROJECT VALUES ('BD3111','PROGRAM','E21','000530','3','1982-02-01','1983-10-01','BD3110');SAVEPOINT PRIMERO;select * from project;INSERT INTO PROJECT VALUES ('EF4121','PAY','D00','000260','2','1982-01-01','1983-02-01','NULL');UPDATE PROJECT SET PRSTAFF=PRSTAFF+2;

SAVEPOINT SEGUNDO;select * from project;DELETE FROM PROJECT WHERE DEPTNO='C01';DELETE FROM PROJECT WHERE DEPTNO='D21';

ROLLBACK TO SAVEPOINT SEGUNDO;select * from project;

ROLLBACK TO SAVEPOINT PRIMERO;select * from project;

COMMIT;

MTI EDUARDO VAZQUEZ ZAYAS

Page 27: Unidad 5 Trans Acci Ones

1

MTI EDUARDO VAZQUEZ ZAYAS

Page 28: Unidad 5 Trans Acci Ones

2

MTI EDUARDO VAZQUEZ ZAYAS

Page 29: Unidad 5 Trans Acci Ones

3

MTI EDUARDO VAZQUEZ ZAYAS

Page 30: Unidad 5 Trans Acci Ones

4

MTI EDUARDO VAZQUEZ ZAYAS

Page 31: Unidad 5 Trans Acci Ones

MTI EDUARDO VAZQUEZ ZAYAS