transacciones en bases de datos...
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/10.jpg)
![Page 11: TRANSACCIONES EN BASES DE DATOS DISTRIBUIDASaisii.azc.uam.mx/areyes/archivos/Licenciatura/BDD/TrnasaccionesMySQL.pdf · TRANSACCIONES EN BASES DE DATOS DISTRIBUIDAS ... • Ejemplo](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022033119/5e88248b62aad006fb491ecf/html5/thumbnails/16.jpg)
Después de COMMIT• Intentar hacer rollback y verificar qué sucede.