Вы находитесь на странице: 1из 47

INSTITUTO TECNOLGICO DE

CIUDAD MADERO

Transacciones
Unidad 5
Dase de Datos

EQUIPO 4
Integrantes:
Gema Patricia Galicia Santos
Daniel Antonio Cruz
Manuel Cruz Daz

5.1 CONCEPTOS BSICOS


Transaccin
La transaccin en un Sistema de Gestin de Bases de
Datos (SGBD), es un conjunto de rdenes que se ejecutan
formando una unidad de trabajo, es decir, en forma
indivisible o atmica.

TRANSACCIN
Una transaccin es un conjunto de acciones llevadas a
cabo por un usuario o un programa de aplicacin, que
acceden o cambian el contenido de la base de datos.

Transaccin

Ejemplo

Las transacciones representan eventos del mundo real,


como:

Las caractersticas que se debe recoger de cada


transaccin son las siguientes:

1. Datos que utiliza la transaccin.


2. Caractersticas funcionales de la transaccin.
3. Salida de la transaccin.

4. Importancia para los usuarios.


5. Frecuencia de utilizacin.

Hay tres tipos de transacciones:


1. En las transacciones de recuperacin se accede a los datos
para visualizarlos en la pantalla a modo de informe.
2. En las transacciones de actualizacin se insertan, borran o
actualizan datos de la base de datos.
3. En las transacciones mixtas se mezclan operaciones de
recuperacin de datos y de actualizacin.

5.2 PROPIEDADES DE LAS


TRANSACCIONES
Las transacciones deben cumplir cuatro propiedades ACID:

1.
2.
3.
4.

Atomicidad (Atomicity)
Consistencia (Consistency)
Aislamiento (Isolation)
Permanencia (Durability):

Propiedades de las Transacciones


1. Atomicidad (Atomicity): es la propiedad que asegura que la
operacin se ha realizado o no, y por lo tanto ante un fallo del
sistema no puede quedar a medias.
2. Consistencia (Consistency): es la 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.

Propiedades de las Transacciones


3. Aislamiento (Isolation): 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.

4. Permanencia (Durability): es la propiedad que asegura que


una vez realizada la operacin, sta persistir y no se podr
deshacer aunque falle el sistema.
Nota: Si la transaccin no se puede finalizar por cualquier motivo, el SGBD
garantiza que los cambios realizados por esta transaccin son deshechos

ESTADOS DE UNA TRANSACCIN


En cualquier momento una transaccin slo puede estar en uno de
los siguientes estados.
1. Activa (Active): el estado inicial; la transaccin permanece en
este estado durante su ejecucin.
2. Parcialmente comprometida (Uncommited): Despus de
ejecutarse la ultima transaccin.
3. Fallida (Failed): tras descubrir que no se puede continuar la
ejecucin normal.
4. Abortada (Rolled Back): despus de haber retrocedido la
transaccin y restablecido la base de datos a su estado anterior
al comienzo de la transaccin.
5. Comprometida (Commited): tras completarse con xito.

Diagrama de estados de una transaccin:

5.3 GRADOS DE
CONSISTENCIA
Consistencia es un trmino ms amplio que el de integridad. Podra
definirse como la coherencia entre todos los datos de la base de
datos.
Cuando se pierde la integridad tambin se pierde la consistencia.
Pero la consistencia tambin puede perderse por razones de
funcionamiento.

5.3 GRADOS DE CONSISTENCIA


Una transaccin mantendr la consistencia de la base de datos.
Esto es, si la base de datos se encuentra en un estado consistente
antes de ejecutar la transaccin, una vez que sta termine la
consistencia de la base de datos deber conservarse. Por
consistente se debe entender, internamente consistente.
Consistencia de datos: Eliminando o controlando las
redundancias de datos se reduce en gran medida el riesgo de que
haya inconsistencias. Si un dato est almacenado una sola vez,
cualquier actualizacin se debe realizar slo una vez, y est
disponible para todos los usuarios inmediatamente. Si un dato
est duplicado y el sistema conoce esta redundancia, el propio
sistema puede encargarse de garantizar que todas las copias se
mantienen consistentes.

5.3 GRADOS DE CONSISTENCIA


En trminos de base de datos esto significa que se satisfacen todas
las restricciones en cuanto a su integridad que incluyen:
Todos los valores de la llave primaria son nicos.
La base de datos mantiene integridad referencial lo que significa
que los registros solo referencian informacin que existe.
Ciertos predicados se mantienen. Por ejemplo, la suma de los
gastos es menor o igual al presupuesto.
A diferencia de la atomicidad, el aislamiento y la durabilidad, la
consistencia es una prctica de programacin. La atomicidad, el
aislamiento y la durabilidad estn aseguradas estn o no
programadas para preservar la consistencia. Es responsabilidad
del desarrollador de la aplicacin asegurar que su programa
preserva la consistencia.

5.3 GRADOS DE CONSISTENCIA


Una transaccin finalizada (confirmada parcialmente) puede no
confirmarse definitivamente (consistencia).
Si se confirma definitivamente el sistema asegura la persistencia
de los cambios que ha efectuado en la base de datos.
Si se anula los cambios que ha efectuado son deshechos.

La ejecucin de una transaccin debe conducir a un estado de la


base de datos consistente (que cumple todas las restricciones de
integridad definidas).
Si se confirma definitivamente el sistema asegura la
persistencia de los cambios que ha efectuado en la base de
datos.
Si se anula los cambios que ha efectuado son deshechos.

Una transaccin que termina con xito se dice que est comprometida
(commited), una transaccin que haya sido comprometida llevar a la
base de datos a un nuevo estado consistente que debe permanecer
incluso si hay un fallo en el sistema

5.4 Niveles de
Aislamiento

Qu es Aislamiento?
En bases de datos, el aislamiento es una propiedad que
define cmo y cundo los cambios producidos por una
operacin se hacen visibles para las dems operaciones
concurrentes. Aislamiento es una de las 4 propiedades
ACID
(Atomicidad,
Consistencia,
Aislamiento,
Durabilidad) aplicables a una base de datos
transaccional.

Niveles de Aislamiento
De las cuatro propiedades ACID de un Sistema de gestin
de bases de datos relacionales (SGBDR) la de aislamiento
es la que ms frecuentemente se relaja. Para obtener el
mayor nivel de aislamiento, un SGBDR generalmente
hace un bloqueo de los datos o implementa un Control de
concurrencia mediante versiones mltiples (MVCC), lo
que puede resultar en una prdida de concurrencia. Por
ello se necesita aadir lgica adicional al programa que
accede a los datos para su funcionamiento correcto

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.

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 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.

Nivel de aislamiento por


defecto
El nivel de aislamiento por defecto de distintos SGBDR
vara ampliamente. La mayora de bases de datos que
gestionan transacciones permiten al usuario establecer
cualquier nivel de aislamiento. Algunos SGBDR
requieren sintaxis especial cuando se realiza una
operacin SELECT que efecta bloqueos (e.g.SELECT ...
FOR UPDATE para bloquear para escritura aqullas filas
accedidas)

5.5 Commit y
Rollback

Qu es 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.

Nota:

En trminos de transacciones, lo opuesto de commit


para descartar los cambios "en tentativa" de una
transaccin, es un rollback.

Qu es rollback?
En tecnologas de base de datos, un rollback es una operacin
que devuelve a la base de datos a algn estado previo. Los
Rollbacks 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.

Ejemplo:
Transacciones

5.5 COMMIT Y ROLLBACK


COMMIT
Esta instruccin de SQL se utiliza para confirmar como permanentes las
modificaciones realizadas en una transaccin.
Begin tran
Insert into Mvtos Values (0150, Dep, 1500, 08-10-2008)
Insert into Mvtos Values (7120, Ret, 1500, 08-10-2008)
Update Cuentas Set Saldo = Saldo + 1 where Numero = 0150
Update Cuentas Set Saldo = Saldo 1 Where Numero = 7120
Commit tran
Con la instruccin commit tran se pone una marca para saber hasta que punto se
hizo la transaccin.

Por defecto, MySQL se ejecuta con el modo autocommit activado. Esto significa que en
cuanto ejecute un comando que actualice (modifique) una tabla, MySQL almacena la
actualizacin en disco.
Desactiva el comando autocommit SET AUTOCOMMIT=0;
Tras deshabilitar el modo autocommit debe usar COMMIT para almacenar los cambios en
disco o ROLLBACK si quiere ignorar los cambios hechos desde el comienzo de la
transaccin.
Si quiere deshabilitar el modo autocommit para una serie nica de comandos, puede usar el
comando START TRANSACTION:
START TRANSACTION;
SELECT @A:=SUM(salary)
FROM table1
WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;

Con START TRANSACTION, autocommit permanece deshabilitado hasta el final de la


transaccin con COMMIT o ROLLBACK. El modo autocommit vuelve a su estado previo.

Veremos un ejemplo completo, donde utilizaremos START TRANSACTION (no es necesario


AUTOCOMMIT en 0)
CREATE TABLE `departamentos` (
`CODIGO` INTEGER(11) NOT NULL DEFAULT 0,
`NOMBRE` VARCHAR(100),
`PRESUPUESTO` INTEGER(11) DEFAULT NULL,
PRIMARY KEY (`CODIGO`)
)ENGINE=InnoDB
Ahora, insertaremos registros de la tabla departamentos_externos a departamentos mediante una
transaccin:
START TRANSACTION;
SELECT @A := presupuesto
FROM departamentos_externos
WHERE cdigo =11;
INSERT INTO departamentos( cdigo, nombre, presupuesto )
VALUES ( 11, Department test, @A );
COMMIT; // para aceptar la transaccion

ROLLBACK;//si quieres cancelar la transaccion


En el ejemplo anterior se guardo el presupuesto del departamento externo 11 en la variable @A y luego fue
asignado al presupuesto en la tabla departamentos.
Al realizar una transaccin SQL hay que tener en cuenta que apenas se realice un INSERT, UPDATE o
DELETE se genera un bloqueo sobre la tabla y que otros clientes no pueden acceder para escribir esta tabla.
Otros clientes podrn realizar SELECTs sobre la tabla, pero no podrn ver los datos del primer cliente hasta
que los mismos sean confirmados.

ROLLBACK
Esta funcin del SQL se utiliza para deshacer todas las
modificaciones realizadas desde la ltima confirmacin.
Ejemplo
Begin tran
<Comandos SQL>
<Comandos SQL>
Save tran Puntoseg
<Comandos SQL>
<Comandos SQL>
If @@ERROR <> 0
Rollback tran Puntoseg (cancela todo desde aqu hasta el punto de
guardado)
Else
Commit tran

Veamos un ejemplo.
Disponemos de la tabla EMPLE, que est formada por los
campos que se muestran en la imagen.

A continuacin comenzamos una


transaccin con START
TRANSACTION.

Modificamos el salario de todos los empleados de la tabla EMPLE,


con la siguiente sentencia SQL.
update emple set salario=1000;

Y comprobamos a continuacin que la tabla vuelve a su estado original.

Si queremos validar los cambios en la base de datos, completaremos la transaccin


con el uso de la sentencia COMMIT. Si ejecutamos ROLLBACK justo despus de

hacer el COMMIT, los cambios realizados sobre la base de datos permanecern,


debido a que anteriormente se valid la transaccin, as que una ves utilizada la
sentencia COMMIT ya no puedes usar ROLLBACK.

Observamos a continuacin
que se ha modificado el
salario
de
todos
los
empleados

Deshacemos el trabajo ya que nos


hemos equivocado. Para ello
utilizamos la sentencia ROLLBACK.

Comandos Utilizados

Comandos Utilizados

Comandos Utilizados

Comandos Utilizados

Comandos Utilizados

Comandos Utilizados

Comandos Utilizados

Bibliografa:

http://es.wikipedia.org/wiki/ACID
http://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)
http://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdf
http://www.paginasprodigy.com.mx/evaristopacheco/taller/Grados
Consistencia.html
http://es.wikipedia.org/wiki/Rollback
http://www.slideshare.net/nicola51980/postgresql-leccin-8manipulando-datos-y-transacciones

Вам также может понравиться