Matrcula: 2013-1890 - Resumen del tema de las transacciones (Estados de una transaccin) del libro Fundamentos de Bases de Datos Una transaccin es una unidad de la ejecucin de un programa que accede y posiblemente actualiza varios elementos de datos. Una transaccin se inicia por la ejecucin de un programa de usuario escrito en un lenguaje de manipulacin de datos de alto nivel o en un lenguaje de programacin (por ejemplo SQL, COBOL, C, C++ o Java), y est delimitado por instrucciones (o llamadas a funcin) de la forma inicio transaccin y fin transaccin. La transaccin consiste en todas las operaciones que se ejecutan entre inicio transaccin y el fin transaccin. Estados de una transaccin: En ausencia de fallos, todas las transacciones se completan con xito. Sin embargo, una transaccin puede que no siempre termine su ejecucin con xito. Una transaccin de este tipo se denomina abortada. Si se pretende asegurar la propiedad de atomicidad, una transaccin abortada no debe tener efecto sobre el estado de la base de datos. As, cualquier cambio que haya hecho la transaccin abortada sobre la base de datos debe deshacerse. Una vez que se han deshecho los cambios efectuados por la transaccin abortada, se dice que la transaccin se ha retrocedido. Parte de la responsabilidad del esquema de recuperaciones es gestionar las transacciones abortadas. Una transaccin que termina con xito se dice que est comprometida. Una transaccin comprometida que haya hecho modificaciones transforma la base de datos llevndola a un nuevo estado consistente, que permanece incluso si hay un fallo en el sistema. Cuando una transaccin se ha comprometido no se pueden deshacer sus efectos abortndola. La nica forma de deshacer los cambios de una transaccin comprometida es ejecutando una transaccin compensadora. Una transaccin debe estar en uno de los estados siguientes:
- Activa: El estado inicial; la transaccin permanece en este estado
durante su ejecucin. - Parcialmente comprometida: Despus de ejecutarse la ltima instruccin. - Fallida: Tras descubrir que no puede continuar la ejecucin normal. - Abortada: Despus de haber retrocedido la transaccin y restablecido la base de datos a su estado anterior al comienzo de la transaccin. - Comprometida: Tras completarse con xito. Se dice que una transaccin se ha comprometido slo si ha llegado al estado comprometida. Anlogamente, se dice que una transaccin ha abortado slo si ha llegado al estado abortada. Una transaccin se dice que ha terminado si se ha comprometido o bien se ha abortado. Una transaccin comienza en el estado activa. Cuando acaba su ltima instruccin pasa al estado de parcialmente comprometida. En este punto la transaccin ha terminado su ejecucin, pero es posible que an tenga que ser abortada, puesto que los datos actuales pueden estar todava en la memoria principal y puede producirse un fallo en el hardware antes de que se complete con xito. Una transaccin llega al estado fallida despus de que el sistema determine que dicha transaccin no puede continuar su ejecucin normal (por ejemplo, a causa de errores de hardware o lgicos). Una transaccin de este tipo se debe retroceder. Despus pasa al estado abortada. En este punto, el sistema tiene dos opciones: - Reiniciar la transaccin: Pero slo si la transaccin se ha abortado a causa de algn error hardware o software que no lo haya provocado la lgica interna de la transaccin. Una transaccin reiniciada se considera una nueva transaccin. - Cancelar la transaccin: Normalmente se hace esto si hay algn error interno lgico que slo se puede corregir escribiendo de nuevo el programa de aplicacin, o debido a una entrada incorrecta o debido a que no se han encontrado los datos deseados en la base de datos. -----------------------------------------------------------------------------------------------------------------------
Redacte en sus palabras la diferencia entre los niveles de
aislamiento "REPEATABLE READ" y "SERIALIZABLE".
La diferencia es que en el repeatable read se pueden insertar nuevos
registros, mientras que en serializable slo se puede leer y escribir (select, update) y slo en las lneas que no estn incluidas en la transaccin serializable. Adems, serializable aplica un bloqueo de rango, el cual impide que se inserten nuevos registros en el rango bloqueado por la transaccin.