diseño & procesamiento de transacciones
TRANSCRIPT
7
Procesamiento de
Transacciones
Transacción
Unidad lógica de procesamiento
– Secuencia de operaciones que implican accesos a la base de datos
Una Transacción está delimitada por instrucciones de inicio transacción y fin transacción (la transacción consiste en todas las operaciones que se ejecutan entre inicio transacción y fin transacción)
Pasos para usar transacciones con MySQL:
* Iniciar una transacción con el uso de la sentencia BEGIN.* Actualizar, insertar o eliminar registros en la base de datos.* Si se quieren los cambios a la base de datos, completar la transacción con el uso de la sentencia COMMIT. Únicamente cuando se procesa un COMMIT los cambios hechos por las consultas serán permanentes.* Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK para cancelar los cambios que han sido realizados por las consultas que han sido ejecutadas hasta el momento.
… BEGIN; Inicia la transacción
COMMIT;Finaliza la transacción actual haciendo permanentes todos los cambios pendientes
ROLLBACK; Finaliza la transacción actual descartando todos los cambios pendientes .
Una transacción debe estar en uno de los siguientes estados:
Activa (estado inicial): la transacción permanece en este estado durante su ejecución
Parcialmente Comprometida: la transacción pasa a este estado cuando acaba de realizar la última instrucción
Fallida: la transacción pasa a este estado tras descubrir que no puede continuar la ejecución normal
Abortada: la transacción pasa a este estado después de haber restablecido la base de datos a su estado anterior
Comprometida: la transacción pasa a este estado tras completarse con éxito
Insert
Rollback (Invertir parte incompleta de la transaccion)
Interrumpir conexion antes de completar transaccion
COMMIT
Lecturas Coherentes
Al realizar una consulta de selección, MySQL devuelve los valores presentes de la base de datos hasta la última transacción completada. Si en el momento de realizar la consulta existe alguna transacción en progreso, los resultados de las instrucciones update o insert no se reflejarán.
Transaccion incompletaVentana 1 Ventana 2
Completar transaccionVentana 1 Ventana 2
Lectura de bloqueos para Actualizaciones
Para evitar que se creen registros duplicados.
UPDATE
Leer el valor actual e inserta un nuevo valor, incrementado en una unidad.
Operacion SimultaneaVentana 1 Ventana 2
Agregar registro.Ventana 1 Ventana 2
Se realiza consulta de seleccion en cualquier ventana…
Bloqueo de actualizacion
Bloqueo de lectura en modo compartido
Este tipo de bloqueo no devuelve un valor si el valor que esta leyendo ha sido modificado por otra transaccion incompleta. Devuelve el ultimo valor, pero no forma parte de una transaccion cuya intencion es modificar el valor.
Transaccion
Confirmaciones automaticas
De manera predeterminada, y a menos que se especifique una transaccion con BEGIN, MySQL confirma automaticamente las instrucciones.
Ejemplo
AUTOCOMMIT