diseño & procesamiento de transacciones

Post on 24-Jul-2015

3.984 Views

Category:

Education

16 Downloads

Preview:

Click to see full reader

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

top related