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.
Slide 2
AtomicidadUna 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.CoherenciaCuando 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.AislamientoLas 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. https://technet.microsoft.com/es-es/library/ms190612(v=sql.105).aspx
Slide 3
Transacciones (definición 2)
Una transacción es una unidad de trabajo compuesta por
diversas tareas, cuyo resultado final debe ser que se ejecuten todas o ninguna
de ellas.
Por regla general en un sistema de base de datos todas las
operaciones relacionadas entre sí que se ejecuten dentro un mismo flujo lógico
de trabajo, deben ejecutarse en bloque. De esta manera si todas funcionan la
operación conjunta de bloque tiene éxito, pero si falla cualquiera de ellas,
deberán retrocederse todas las anteriores que ya se hayan realizado. De esta
forma evitamos que el sistema de datos quede en un estado incongruente.http://www.campusmvp.es/recursos/post/Fundamentos-de-SQL-Transacciones.aspx
Slide 4
Propiedades ACID
Una transacción, para cumplir con su propósito y protegernos
de todos los problemas que hemos visto, debe presentar las siguientes
características:
Atomicidad:
las operaciones que componen una transacción deben considerarse como una
sola.
Consistencia:
una operación nunca deberá dejar datos inconsistentes.
Aislamiento:
los datos "sucios" deben estar aislados, y evitar que los
usuarios utilicen información que aún no está confirmada o validada. (por
ejemplo: ¿sigue siendo válido el saldo mientras realizo la operación?)
Durabilidad:
una vez completada la transacción los datos actualizados ya serán
permanentes y confirmados.
A estas propiedades se las suele conocer como propiedades
ACID (de sus siglas en inglés: Atomicity, Consistency, Isolation yDurability).
Slide 5
Por regla general en los gestores de datos relacionales modernos
disponemos de tres tipos de transacciones según la forma de iniciarlas:
De
confirmación automática: el gestor de datos inicia una transacción
automáticamente por cada operación que actualice datos. De este modo
mantiene siempre la consistencia de la base de datos, aunque puede generar
bloqueos.
Implícitas:
cuando el gestor de datos comienza una transacción automáticamente cada
vez que se produce una actualización de datos, pero el que dicha
transacción se confirme o se deshaga, lo debe indicar el programador.
Explícitas:
son las que iniciamos nosotros "a mano" mediante instrucciones
SQ. somos nosotros, los programadores, los que indicamos qué operacio0nes
va a abarcar.
Cómo definir transacciones
Slide 6
Sintaxis/Operaciones
Inicio de Transacción: Operación que marca el momento en el que una transacción comienza a ejecutarse.
Leer o Escribir: Operaciones de lectura/escritura de elementos de la base de datos.
Fin de la Transacción: Se verifica si la transacción debe abortarse por alguna razón.
Confirmar (COMMIT): La operación termino con éxito.Abortar (ROLLBACK): La transacción termino sin éxito.
Slide 7
Regularmente las transacciones comienzan con un BEGIN WORK y finalizan con unCOMMIT/COMMIT
WORK o ROLLBACK/ROLLBACK WORK.BEGIN WORK
UPDATE Tabla SET dato = '15' WHERE dato2 = 'Manolo'
...
...
...
DELETE FROM dato = 'Manolo'
COMMIT WORK
Sintaxis
Slide 8
Hay otra manera de escribir una transacción estas son las transacciones ANSI, estas comienzan cuando inicia cualquier sentencia
SQL y finaliza con un COMMIT o ROLLBACK.UPDATE Tabla SET dato = '15' WHERE dato2 = 'Manolo'
...
...
...
DELETE FROM dato = 'Manolo'
COMMIT
Sintaxis
Slide 9
Sintaxis
Sintaxis
SAVEPOINT savepoint_nombre
Ejemplo:
BEGIN; INSERT INTO table1 VALUES (1); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (2); ROLLBACK TO SAVEPOINT
my_savepoint; INSERT INTO table1 VALUES (3); COMMIT;
Slide 10
SET TRANSACTION transaction_mode [, ...] SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...] where
transaction_mode is one of: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
Ejemplo: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; BEGIN TRANSACTION; SELECT COUNT(*) AS TotalProblems,
SUM(CASE WHEN Problem LIKE '%Kenny%' THEN 1 END) AS [Kenny's Problems], SUM(CASE WHEN Problem LIKE '%printer%'THEN 1
END) AS [Printer Problems] FROM Tickets WHERE ID BETWEEN 0 AND 100000;