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

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