transaciones de programacion
TRANSCRIPT
-
7/24/2019 transaciones de programacion
1/47
TransaccionesUnidad 5
INSTITUTOTECNOLGICODE
CIUDADMADERO
Dase de Datos
-
7/24/2019 transaciones de programacion
2/47
EQUIPO 4Integrantes:
Gema Patricia Galicia Santos
Daniel Antonio Cruz
Manuel Cruz Daz
-
7/24/2019 transaciones de programacion
3/47
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 formaindivisible o atmica.
-
7/24/2019 transaciones de programacion
4/47
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.
-
7/24/2019 transaciones de programacion
5/47
TransaccinLas transacciones representan eventos del mundo real,
como:
Ejemplo
-
7/24/2019 transaciones de programacion
6/47
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.
Las caractersticas que se debe recoger de cada
transaccin son las siguientes:
-
7/24/2019 transaciones de programacion
7/47
Hay tres tipos de transacciones:
1. En las transacciones de recuperacin se accede a los datospara 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 derecuperacin de datos y de actualizacin.
-
7/24/2019 transaciones de programacion
8/47
5.2 PROPIEDADES DE LASTRANSACCIONES
Las transacciones deben cumplir cuatro propiedades ACID:
1. Atomicidad (Atomicity)2. Consistencia (Consistency)3. Aislamiento (Isolation)4. Permanencia (Durability):
-
7/24/2019 transaciones de programacion
9/47
1. Atomicidad (Atomicity): es la propiedad que asegura que laoperacin se ha realizado o no, y por lo tanto ante un fallo delsistema 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, seejecutan aquellas operaciones que no van a romper la reglas y
directrices de integridad de la base de datos.
Propiedades de las Transacciones
-
7/24/2019 transaciones de programacion
10/47
3. Aislamiento (Isolation): es la propiedad que asegura que unaoperacin 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 queuna 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
Propiedades de las Transacciones
-
7/24/2019 transaciones de programacion
11/47
En cualquier momento una transaccin slo puede estar en uno de
los siguientes estados.
1. Activa (Active): el estado inicial; la transaccin permanece eneste estado durante su ejecucin.
2. Parcialmente comprometida (Uncommited): Despus deejecutarse la ultima transaccin.
3. Fallida (Failed): tras descubrir que no se puede continuar laejecucin normal.
4. Abortada (Rolled Back): despus de haber retrocedido la
transaccin y restablecido la base de datos a su estado anterioral comienzo de la transaccin.
5. Comprometida (Commited): tras completarse con xito.
ESTADOS DE UNA TRANSACCIN
-
7/24/2019 transaciones de programacion
12/47
Diagrama de estados de una transaccin:
-
7/24/2019 transaciones de programacion
13/47
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.
-
7/24/2019 transaciones de programacion
14/47
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 lasredundancias 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
-
7/24/2019 transaciones de programacion
15/47
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 programapreserva la consistencia.
5.3 GRADOS DE CONSISTENCIA
-
7/24/2019 transaciones de programacion
16/47
Una transaccin finalizada (conf irmada 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 deintegridad definidas).
Si se confirma definitivamente el sistema asegura lapersistencia de los cambios que ha efectuado en la base de
datos.
Si se anula los cambios que ha efectuado son deshechos.
5.3 GRADOS DE CONSISTENCIA
-
7/24/2019 transaciones de programacion
17/47
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 permanecerincluso si hay un fallo en el sistema
-
7/24/2019 transaciones de programacion
18/47
5.4 Niveles deAislamiento
-
7/24/2019 transaciones de programacion
19/47
Qu es Aislamiento?
En bases de datos, el aislamientoes una propiedad que
define cmo y cundo los cambios producidos por unaoperacin 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.
-
7/24/2019 transaciones de programacion
20/47
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 generalmentehace 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 queaccede a los datos para su funcionamiento correcto
-
7/24/2019 transaciones de programacion
21/47
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 seejecutaran 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
-
7/24/2019 transaciones de programacion
22/47
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
repetiblespuede ocurrir, como se explica ms abajo). Al
igual ocurra en el nivel anterior, no se gestionanlos bloqueos de rango.
-
7/24/2019 transaciones de programacion
23/47
LECTURAS NOCOMPROMETIDAS (READUNCOMMITTED)
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.
Ni l d i l i
-
7/24/2019 transaciones de programacion
24/47
Nivel de aislamiento pordefecto
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 UPDATEpara bloquear para escritura aqullas filasaccedidas)
-
7/24/2019 transaciones de programacion
25/47
5.5 Commit y
Rollback
-
7/24/2019 transaciones de programacion
26/47
Qu es commit?
En el contexto de la Ciencia de la computacin y
la gestin de datos, commit(accin de comprometer) serefiere 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.
-
7/24/2019 transaciones de programacion
27/47
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.
Una sentencia COMMIT
http://es.wikipedia.org/wiki/Savepointhttp://es.wikipedia.org/wiki/Savepoint -
7/24/2019 transaciones de programacion
28/47
En trminos de transacciones, lo opuesto de commit
para descartar los cambios "en tentativa" de una
transaccin, es un rollback.
Nota:
http://es.wikipedia.org/wiki/Rollbackhttp://es.wikipedia.org/wiki/Rollback -
7/24/2019 transaciones de programacion
29/47
Qu es rollback? En tecnologas de base de datos, un rollbackes una operacin
que devuelve a la base de datos a algn estado previo. LosRollbacks son importantes para la integridad de la base dedatos, a causa de que significan que la base de datos puede ser
restaurada a una copia limpia incluso despus de que se hanrealizado operaciones errneas.
Son cruciales para la recuperacin de crashes de un servidorde base de datos; realizando rollback(devuelto) cualquiertransaccin que estuviera activa en el tiempo del crash, la basede datos es restaurada a un estado consistente.
-
7/24/2019 transaciones de programacion
30/47
En SQL, ROLLBACK es un comando que causa que
todos los cambios de datos desde la ltimasentencia 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.
-
7/24/2019 transaciones de programacion
31/47
Ejemplo:
Transacciones
-
7/24/2019 transaciones de programacion
32/47
5.5 COMMIT Y ROLLBACK
COMMITEsta instruccin de SQL se utiliza para confirmar como permanentes las
modificaciones realizadas en una transaccin.
Begin tranInsert 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 = 0150Update Cuentas Set Saldo = Saldo1 Where Numero = 7120
Commit tran
Con la instruccin commit tran se pone una marca para saber hasta que punto sehizo la transaccin.
-
7/24/2019 transaciones de programacion
33/47
Por defecto, MySQL se ejecuta con el modo autocommit activado. Esto significa que encuanto ejecute un comando que actualice (modifique) una tabla, MySQL almacena laactualizacin en disco.
Desactiva el comando autocommit SET AUTOCOMMIT=0;
Tras deshabilitar el modo autocommit debe usar COMMIT para almacenar los cambios endisco o ROLLBACK si quiere ignorar los cambios hechos desde el comienzo de latransaccin.
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 latransaccin con COMMIT o ROLLBACK. El modo autocommit vuelve a su estado previo.
-
7/24/2019 transaciones de programacion
34/47
Veremos un ejemplo completo, donde utilizaremos START TRANSACTION (no es necesarioAUTOCOMMIT 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 unatransaccin:
START TRANSACTION;SELECT @A := presupuesto
FROM departamentos_externosWHERE cdigo =11;INSERT INTO departamentos( cdigo, nombre, presupuesto )VALUES ( 11, Department test, @A );COMMIT; // para aceptar la transaccionROLLBACK;//si quieres cancelar la transaccion
En el ejemplo anterior se guardo el presupuesto del departamento externo 11 en la variable @A y luego fueasignado al presupuesto en la tabla departamentos.
Al realizar una transaccin SQL hay que tener en cuenta que apenas se realice un INSERT, UPDATE oDELETE 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 hastaque los mismos sean confirmados.
-
7/24/2019 transaciones de programacion
35/47
ROLLBACK Esta funcin del SQL se utiliza para deshacer todas las
modificaciones realizadas desde la ltima confirmacin.
EjemploBegin tran
Save tran Puntoseg
If @@ERROR 0Rollback tran Puntoseg (cancela todo desde aqu hasta el punto deguardado)
ElseCommit tran
-
7/24/2019 transaciones de programacion
36/47
Veamos un ejemplo.
Disponemos de la tabla EMPLE, que est formada por los
campos que se muestran en la imagen.
-
7/24/2019 transaciones de programacion
37/47
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;
-
7/24/2019 transaciones de programacion
38/47
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.
-
7/24/2019 transaciones de programacion
39/47
Observamos a continuacin
que se ha modificado el
salario de todos losempleados
Deshacemos el trabajo ya que nos
hemos equivocado. Para ello
utilizamos la sentencia ROLLBACK.
-
7/24/2019 transaciones de programacion
40/47
Comandos Utilizados
-
7/24/2019 transaciones de programacion
41/47
Comandos Utilizados
-
7/24/2019 transaciones de programacion
42/47
Comandos Utilizados
-
7/24/2019 transaciones de programacion
43/47
Comandos Utilizados
-
7/24/2019 transaciones de programacion
44/47
Comandos Utilizados
-
7/24/2019 transaciones de programacion
45/47
Comandos Utilizados
-
7/24/2019 transaciones de programacion
46/47
Comandos Utilizados
-
7/24/2019 transaciones de programacion
47/47
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/GradosConsistencia.html
http://es.wikipedia.org/wiki/Rollback
http://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transacciones
http://es.wikipedia.org/wiki/ACIDhttp://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)http://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdfhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://es.wikipedia.org/wiki/Rollbackhttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://www.slideshare.net/nicola51980/postgresql-leccin-8-manipulando-datos-y-transaccioneshttp://es.wikipedia.org/wiki/Rollbackhttp://es.wikipedia.org/wiki/Rollbackhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.paginasprodigy.com.mx/evaristopacheco/taller/GradosConsistencia.htmlhttp://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdfhttp://www.fdi.ucm.es/profesor/fernan/dbd/apuntestema07.pdfhttp://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)http://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)http://es.wikipedia.org/wiki/ACIDhttp://es.wikipedia.org/wiki/ACID