You are on page 1of 25

Instituto Tecnolgico Superior

de Nochistln
Ingeniera en Sistemas Computacionales
Taller de Base de Datos

Integrantes:
Lizeth Gonzlez
Martnez
Csar Ivn Franco
Alans
Profesora:
Angelica Vielmas

introduccin
Una transaccin es un conjunto de operaciones que van
a ser tratadas como una nica unidad. Estas
transacciones
deben
cumplir
4
propiedades
fundamentales comnmente conocidas como ACID
(atomicidad, coherencia, asilamiento y durabilidad).
Entre las habilidades de todo Sistema Gestor de Bases de
Datos Relacionados tiene que estar la de permitir al
programador crear transacciones.
Ejemplo

nos permite trabajar con transacciones


de manera sencilla y eficaz.

Una transaccin es una o ms sentencias que se toman como una


unidad (todo termina bien o todo se aborta). Una transaccin es una
unidad lgica de trabajo. Definida para las reglas del negocio.
Tpicamente incluye al menos una modificacin de datos. Pasa la
base de datos de un estado consistente a otro.
Una transaccin tiene dos posibles salidas:
Committed
Todas las modificaciones quedan en firme
Rolled back
Las modificaciones retornan a su estado inicial

Resulta importante que, o bien se ejecuten


completamente todas las acciones de una
transaccin, o bien, en caso de fallo, se
deshagan los efectos parciales de la
transaccin. Esta propiedad se denomina
atomicidad. Adems, una vez ejecutada con
xito una transaccin, sus efectos deben
persistir en la base de datos: un fallo en el
sistema no debe tener como consecuencia
que la base de datos se olvide de una
transaccin que haya completado con xito.

1. Si se realiza un pago con una tarjeta electrnica, la


cantidad de dinero de la cuenta sobre la que realiza el
cargo debe disminuir en la misma cantidad que la cuenta
que recibe el pago, de no ser as, ninguna de las dos
cuentas se modificar

2. Un sistema de reserva de asientos de una lnea area es


utilizado simultneamente por varios operadores, tras encontrar un
asiento vaco, los datos sobre la reserva de dicho asiento deben
ser bloqueados hasta que la reserva se realice, de no ser as, otro
operador podra tener la impresin de que dicho asiento est libre
cuando en realidad est siendo reservado en ese mismo instante.
Sin las debidas precauciones, en una transaccin podra ocurrir
una reserva doble.

3. TPS de nmina: es un sistema de procesamiento de transacciones


contable comn que se encuentra en la mayora de las empresas. Un
sistema de nmina registra el pago en efectivo a los empleados. El
archivo principal est compuesto de piezas separadas de informacin
(nombre, direccin, nmero del empleado, etc.) denominadas
elementos de datos. Los datos se introducen al sistema y estos
actualizan los elementos de datos. Los elementos del archivo principal
se combinan de diferentes maneras para elaborar informes de inters
para la administracin y las oficinas gubernamentales y para enviar los
cheques de pago a los empleados. Estos TPS pueden generar ms
combinaciones para as realizar otros tipos de operaciones.

Propiedad que asegura que


slo se empieza aquello que
se puede acabar. Por lo
tanto, se ejecutan aquellas
operaciones que no van a
romper
la
reglas
y
directrices de integridad de
la base de datos.

Es la propiedad que asegura


que una operacin no puede
afectar a otras. Esto asegura
que la realizacin de dos
transacciones
sobre
la
misma informacin nunca
generar ningn tipo de
error.

Asegura que una vez


realizada la operacin,
sta persistir y no se
podr deshacer aunque
falle el sistema.

Lecturas sucias
Una lectura sucia ocurre cuando se le permite a una transaccin la lectura de una fila que ha sido modificada
por otra transaccin concurrente pero todava no ha sido cometida.
Las lecturas sucias funcionan de modo similar a las lecturas no repetibles; sin embargo la segunda
transaccin no necesita ser cometida para que la primera d un resultado diferente. Lo nico que se puede
prevenir en el nivel de aislamiento LECTURAS NO COMETIDAS es que las actualizaciones aparezcan en
desorden en el resultado; esto es, que las primeras actualizaciones siempre aparecern antes que las
actualizaciones posteriores.
En el ejemplo, la transaccin 2 cambia una fila, pero no comete los cambios. La transaccin 1 entonces lee
los datos sin cometer. Si ahora la transaccin 2 deshace sus cambios (ya ledos por la transaccin 1) o
realiza otros cambios, entonces los datos que ha recuperado la transaccin 1 sern errneos.
Pero no existe ningn usuario que tenga la edad de 21.

Transaccin 1

Transaccin 2

/* Query 1 */ SELECT edad FROM


usuarios WHERE id = 1; /* leer 20 */
/* Consulta 2 */ UPDATE usuarios
SET edad = 21 WHERE id = 1; /* No
se hace commit */
/* Query 1 */ SELECT edad FROM
usuarios WHERE id = 1; /* leer 21 */
ROLLBACK; /* LECTURA SUCIA
basada en bloqueo */

Lecturas no repetibles
Una lectura no repetible ocurre cuando en el curso de una transaccin una fila se lee dos
veces y los valores no coinciden.
El efecto de lecturas no repetible puede ocurrir en una implementacin de concurrencia
mediante bloqueos cuando no se efectan stos al hacer un SELECT, o cuando los
bloqueos se liberan nada ms terminar la operacin SELECT. Cuando se usa el mtodo
MVCC, las lecturas no repetibles pueden aparecer cuando se relaja el requisito de que al
cometer una transaccin afectada por un conflicto sta deba deshacerse.
En este ejemplo, la transaccin 2 comete correctamente, lo que significa que sus cambios a
la fila con id 1 deberan hacerse visibles. Sin embargo, la transaccin 1 ya ha ledo un valor
distinto para edad en esa fila. En los niveles de aislamiento SERIALIZABLE y REPEATABLE
READ, el SGBDR debera devolver el valor antiguo. En los niveles READ COMMITTED y
READ UNCOMMITTED, el SGBDR debera devolver el valor nuevo; esto es una lectura no
repetible.
Transaccin 1

Transaccin 2

/* Consulta 1 */
SELECT * FROM usuarios WHERE id
= 1;
/* Consulta 2 */
UPDATE usuarios SET edad = 21
WHERE id = 1; COMMIT; /* en MVCC
o READ COMMITTED basado en
bloqueos */
/* Consulta 1 */
SELECT * FROM usuarios WHERE id
= 1; COMMIT; /* REPEATABLE READ
basado en bloqueos */

Lecturas fantasma
Una lectura fantasma ocurre cuando, durante una transaccin, se ejecutan dos consultas
idnticas, y los resultados de la segunda son distintos de los de la primera.
Esto puede ocurrir cuando no se realizan bloqueos de rango al realizar una operacin SELECT
... WHERE.
La anomala de las lecturas fantasma es una caso particular de las lecturas no repetibles
cuando la transaccin 1 repite una consulta acotada en rango SELECT ... WHERE y, entre
ambas operaciones la transaccin 2 crea (i.e. INSERT) nuevas filas (en la misma tabla) que
entran dentro de esa clusula WHERE.
Ntese que la transaccin 1 ejecuta la misma consulta dos veces. Si se mantuviera el mayor
nivel de aislamiento, los resultados de ambas consultas coincidiran, de hecho es lo que se
pide a una base de datos operando al nivel de aislamiento SERIALIZABLE. Sin embargo, a
niveles de aislamiento menores, pueden obtenerse resultados distintos.
Transaccin 1

Transaccin 2

/* Consulta 1 */ SELECT *
FROM usuarios WHERE
edad BETWEEN 10 AND 30;
/* Consulta 2 */ INSERT
INTO usuarios VALUES ( 3,
'Bob', 27 ); COMMIT;

/* Consulta 1 */ SELECT *
FROM usuarios WHERE
edad BETWEEN 10 AND 30;

Lecturas no comprometidas (Read uncommitted)


Este es el menor nivel de aislamiento. En l se permiten las lecturas sucias (ver ms abajo),
por lo que una transaccin pude ver cambios no cometidos an por otra transaccin.

Lecturas comprometidas (Read committed)


En este nivel de aislamiento, un SGBDR que implemente el control de concurrencia basado
en bloqueos mantiene los bloqueos de escritura -de los datos seleccionados- hasta el final de
la transaccin, mientras que los bloqueos de lectura se cancelan tan pronto como acaba la
operacin de SELECT (por lo que el efecto de las lecturas no repetibles puede ocurrir, como
se explica ms abajo). Al igual ocurra en el nivel anterior, no se gestionan los bloqueos de
rango.

Lecturas repetibles (Repeatable reads)


En este nivel de aislamiento, un SGBDR que implemente el control de concurrencia basado
en bloqueos mantiene los bloqueos de lectura y escritura -de los datos seleccionados- hasta el
final de la transaccin. Sin embargo, no se gestionan los bloqueos de rango, por lo que las
lecturas fantasma pueden ocurrir (ver ms abajo).

Serializable
Este es el nivel de aislamiento ms alto. Especifica que todas las transacciones
ocurran de modo aislado, o dicho de otro modo, como si todas las transacciones se
ejecutaran de modo serie (una tras otra). La sensacin de ejecucin simultnea de
dos o ms transacciones que perciben los usuarios sera una ilusin producida por
el SGBD.
Si el SGBDR hace una implementacin basada en bloqueos, la serializacin
requiere que los bloques de lectura y escritura se liberen al final de la transaccin.
Del mismo modo deben realizarse bloqueos de rango -sobre los datos
seleccionados con SELECT usando WHERE- para evitar el efecto de las lecturas
fantasma (ver ms abajo).
Cuando se hace una implementacin no basada en bloqueos, si el SGBDR detecta
una colisin de escritura entre transacciones slo a una de ellas se le autoriza
cometer.

Commit
En el contexto de la Ciencia de la computacin y la gestin de datos,
commit (accin de comprometer) se refiere a la idea de consignar un
conjunto de cambios "tentativos, o no permanentes". Un uso popular es al
final de una transaccin de base de datos.
Una sentencia COMMIT en SQL finaliza una transaccin de base de datos
dentro de un sistema gestor de base de datos relacional (RDBMS) y pone
visibles todos los cambios a otros usuarios. El formato general es emitir
una sentencia BEGIN WORK, una o ms sentencias SQL, y entonces la
sentencia COMMIT. Alternativamente, una sentencia ROLLBACK se
puede emitir, la cual deshace todo el trabajo realizado desde que se emiti
BEGIN WORK. Una sentencia COMMIT publicar cualquiera de los
savepoints (puntos de recuperacin) existentes que puedan estar en uso.
En trminos de transacciones, lo opuesto de commit para descartar los
cambios "en tentativa" de una transaccin, es un rollback.

Rollback
En tecnologas de base de datos, un rollback es una operacin que devuelve a la base
de datos a algn estado previo. Los Rollback son importantes para la integridad de la
base de datos, a causa de que significan que la base de datos puede ser restaurada a
una copia limpia incluso despus de que se han realizado operaciones errneas. Son
cruciales para la recuperacin de crashes de un servidor de base de datos; realizando
rollback(devuelto) cualquier transaccin que estuviera activa en el tiempo del crash, la
base de datos es restaurada a un estado consistente.
En SQL, ROLLBACK es un comando que causa que todos los cambios de datos desde
la ltima sentencia BEGIN WORK, o START TRANSACTION sean descartados por el
sistema de gestin de base de datos relacional (RDBMS), para que el estado de los
datos sea "rolled back"(devuelto) a la forma en que estaba antes de que aquellos
cambios tuvieran lugar.
Una sentencia ROLLBACK tambin publicar cualquier savepoint existente que pudiera
estar en uso.

BIBLIOGRAFIA
http://sistematransaccional.wikispaces.com/Ejemplos+de+SP
T
http://es.wikipedia.org/wiki/Transacci%C3%B3n_%28base_de
_datos%29
http://es.wikipedia.org/wiki/Aislamiento_%28ACID%29
http://es.wikipedia.org/wiki/Commit
http://es.wikipedia.org/wiki/Rollback

You might also like