Transacciones en las Bases de Datos
Folien in diesem Satz (9)
-
Transacciones en las bases de datos
- Gerardo Alejandro Arévalo Anaya
- Taller de administración de bases de datos
-
- Una transacción es una secuencia de operaciones realizadas como una sola unidad lógica de trabajo. Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID), para ser calificada como transacción.
- Atomicidad
- Una transacción debe ser una unidad atómica de trabajo, tanto si se realizan todas sus modificaciones en los datos, como si no se realiza ninguna de ellas.
- Coherencia
- Cuando finaliza, una transacción debe dejar todos los datos en un estado coherente. En una base de datos relacional, se deben aplicar todas las reglas a las modificaciones de la transacción para mantener la integridad de todos los datos. Todas las estructuras internas de datos, como índices de árbol b o listas doblemente vinculadas, deben estar correctas al final de la transacción.
- Aislamiento
- Las modificaciones realizadas por transacciones simultáneas se deben aislar de las modificaciones llevadas a cabo por otras transacciones simultáneas. Una transacción reconoce los datos en el estado en que estaban antes de que otra transacción simultánea los modificara o después de que la segunda transacción haya concluido, pero no reconoce un estado intermedio. Esto se conoce como seriabilidad, ya que deriva en la capacidad de volver a cargar los datos iniciales y reproducir una serie de transacciones para finalizar con los datos en el mismo estado en que estaban después de realizar las transacciones originales.
- DurabilidadUna vez concluida una transacción, sus efectos son permanentes en el sistema. Las modificaciones persisten aún en el caso de producirse un error del sistema.
-
- *Compromete la transacción actual; es decir, hace que los cambios realizados por la transacción sean permanentes en la base de datos.
- Después de que se comprometa la transacción se inicia una nueva transacción automáticamente.
- *Finaliza una transacción y permite completar todos los cambios a la base de datos.
- Sintaxis EJEMPLO:
- La instrucción COMMIT, se representa con la siguiente sintaxis: START TRANSACTION
- COMMIT [ WORK ] [ AND [ NO ] CHAIN ] ISOLATION LEVEL READ UNCOMMITTED;
- SELECT *
- FROM ARTISTAS;
- COMMIT;
- En su punto más básico, la instrucción COMMIT requiere solamente la palabra clave COMMIT.
- Todos los demás elementos de la instrucción son opcionales. COMMIT solo sirve para indicar que la transacción se realizo completamente.
-
- causa el retroceso de la transacción actual; es decir, deshace todas las actualizaciones realizadas por las instrucciones SQL de la transacción; así, el estado de la base de datos se restaura al que existía previo a la ejecución de la transacción.
- A pesar de que el objetivo de cualquier transacción es completar los cambios hechos por las instrucciones
- en esa transacción, no hay duda que existirán ocasiones cuando se quiera reinvertir esos
- cambios. Para poder controlar estas reinversiones, se debe utilizar una instrucción ROLLBACK
- para deshacer los cambios y eliminar la transacción, o para regresar los cambios a un punto de
- recuperación específico.
- La siguiente sintaxis muestra los diferentes elementos que pueden ser incluidos
- en una instrucción ROLLBACK:
- ROLLBACK [ WORK ] [ AND [ NO ] CHAIN ]
- [ TO SAVEPOINT ]
- ROLLBACK, a diferencia de la instrucción COMMIT, incluye la
- cláusula opcional TO SAVEPOINT. La cláusula TO SAVEPOINT especifica un punto de recuperación
- que se utiliza si los cambios tienen que ser reinvertidos.
-
- START TRANSACTION ISOLATION LEVEL SERIALIZABLE;
- SELECT TITULO_CD, EN_EXISTENCIA
- FROM DISCOS_COMPACTOS
- WHERE ID_DISQUERA = 832;
- SAVEPOINT SECCION_1;
- UPDATE DISCOS_COMPACTOS
- SET EN_EXISTENCIA = EN_EXISTENCIA + 2
- WHERE ID_DISQUERA = 832;
- ROLLBACK TO SAVEPOINT SECCION_1;
-
- Crea un punto de recuperación dentro de una transacción. Un punto de recuperación
- marca una zona dentro de la transacción que actúa como un punto para detenerse
- cuando una transacción tiene que regresar a su punto inicial.
- SINTAXIS
- Crear un punto de recuperación en la transacción es muy simple, como se muestra en la siguiente
- sintaxis:
- SAVEPOINT <nombre del punto de recuperación>
- Todo lo que se necesita utilizar es la palabra clave SAVEPOINT, seguida del nombre del punto de
- recuperación.
- Por ejemplo, para crear un punto de recuperación llamado SECCION_1, se deberá
- utilizar la siguiente instrucción:
- SAVEPOINT SECCION_1;
- Una vez que se crea el punto de recuperación, se puede utilizar el nombre SECCION_1 para identificar
- el punto de recuperación posteriormente en la transacción.
-
- La instrucción
- SET TRANSACTION permite configurar la mayoría de las propiedades asociadas con el
- proceso de transacción. Se puede ejecutar esta instrucción solamente cuando ninguna transacción
- está activa (o en el caso de Oracle, sólo como la primera instrucción después de COMMIT o ROLLBACK).
- Cuando sí se utiliza una instrucción SET TRANSACTION, las propiedades configuradas
- dentro de la instrucción son aplicadas solamente a la siguiente transacción que es iniciada. Las
- propiedades no se trasladan de una transacción a la otra.
- La instrucción SET TRANSACTION no es obligatoria para iniciar una transacción. Si la instrucción
- no es ejecutada, la transacción utiliza ya sea las propiedades de manera predeterminada,
- o las propiedades suministradas en la instrucción subsecuente START TRANSACTION. Si se ejecuta
- la instrucción SET TRANSACTION, la transacción utiliza las propiedades especificadas en
- esa instrucción.
-
- la sintaxis utilizada para una instrucción SET TRANSACTION. En
- su forma más básica, la sintaxis luce de la siguiente manera:
- SET [ LOCAL ] TRANSACTION [ { , } ... ]
- se puede ver que el único tipo diferente
- de opción que se necesita especificar es aquel representado por el marcador de posición .
- Existen tres tipos de modos de transacción que se pueden especificar:
- *Nivel de acceso
- *Nivel de aislamiento
- *Tamaño de diagnóstico
- Se deben especificar uno o más modos de transacción. Si se especifica más de uno, deben
- quedar separados por comas. Además, no se puede incluir más de uno del mismo tipo de los modos
- de transacción
-
- Silberschatz A. & Korth H. & Sudarshan F.. (2002). Fundamentos de Bases de Datos. Madrid: McGraw-Hill.
- Microsoft. (2010). Transacciones (motor de la base de datos). agosto 19, 2010, de TechNet Sitio web: https://technet.microsoft.com/es-es/library/ms190612(v=sql.105).aspx
- Oppel, Andy. & Sheldon, Robert.. (2010). Fundamentos de SQL. Madrid: McGRAW-HILL.