TRANSACCIONES EN BASES DE DATOS...

16
TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS Base de datos distribuidas Universidad Autónoma Metropolitana Prof. Alejandro Reyes Ortiz

Transcript of TRANSACCIONES EN BASES DE DATOS...

Page 1: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS

Base de datos distribuidas Universidad Autónoma Metropolitana

Prof. Alejandro Reyes Ortiz

Page 2: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Objetivos• Identificar y explicar las primitivas de las transacciones

• Crear transacciones en Base de datos: MySQL

• Ejemplo transacciones en Base de datos: MySQL

Page 3: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Primitivas para el manejo de transacciones

Las transacciones consisten de una secuencia deoperaciones primitivas encerradas entre las palabrasclave Begin Transaction y End Transaction. Porejemplo:

BeginTransaction Reservación. . .EndTransaction {Reservación}

Page 4: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Primitivas para el manejo de transacciones

• ABORT_TRANSACTION (deshacer operación)

• READ (leer datos)

• WRITE (escribir datos)

• COMMIT (Consumación)

Page 5: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Transacciones en MySQL

• MySQL tiene sus instrucciones para ejecutar un sistemade transacciones.

• El efecto de todas las sentencias SQL en una transacciónes que queden exitosas (commit) o que todas regresen asu estado original (rollback).

Page 6: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Transacciones en MySQL

• Por defecto, MySQL se ejecuta en modo autocommit.

• Esto significa que tan pronto como se ejecuta una sentencia seactualiza (modifica) la tabla, MySQL almacenará laactualización en disco.

• Se puede poner MySQL en modo no-autocommit con elcomando siguiente:

SET AUTOCOMMIT=0;

Page 7: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Transacciones en MySQL• Iniciar una transacción

BEGIN y BEGIN WORK están disponibles desde MySQL3.23.17 y 3.23.19, respectivamente.

START TRANSACTION fue añadido en MySQL 4.0.11;

Page 8: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Sintaxis de una transacción en MySQL 5.5

START TRANSACTION;

SET AUTOCOMMIT = 0;

SELECT, INSERT, UPDATE o DELETE

COMMIT o ROLLBACK

ß Inicio de la Transacción

ß No-autocommit

ß Bloque de operaciones

ß Terminación

Page 9: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Crear una tabla cuenta

Page 10: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo
Page 11: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Transacciones en MySQL: almacenamiento temporal

Existe el registro en la tabla demanera temporal pero no en elalmacenamiento permanente.

START TRANSACTION; SET AUTOCOMMIT = 0; UPDATE cuentas SET saldo=saldo-1000 WHERE idCuenta=2222; UPDATE cuentas SET saldo=saldo+1000 WHERE idCuenta=6666;

Page 12: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Transacciones en MySQL: RollBackAlmacenamiento permanente

(nueva instancia)Almacenamiento temporal

(misma instancia)

Page 13: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Transacciones en MySQL: RollBack

ROLLBACK;

SELECT * FROM cuentas;

La transacción se termina ROLLBACK.

Page 14: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Transacciones en MySQL: ExitosaSTART TRANSACTION;

SET AUTOCOMMIT = 0; UPDATE cuentas SET saldo=saldo-1000 WHERE

idCuenta=2222; UPDATE cuentas SET saldo=saldo+1000 WHERE idCuenta=6666;

La transacción se termina con la instrucciónCOMMIT.

COMMIT;SELECT * FROM banco.cuentas;

Almacenamiento temporal (misma instancia)

Se verá reflejada en almacenamiento permanente

Page 15: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Después de COMMIT• Se verá reflejada la actualización en cualquier instancia

Page 16: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo

Después de COMMIT• Intentar hacer rollback y verificar qué sucede.