Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE JESS
CARRERA: Ing. en sistemas computacionales MATERIA: Taller de base de datos INVESTIGACIN: UNIDAD5: Transacciones. DOCENTE:
PRESENTA:
Noviembre de 2012
[UNIDAD5]
29 de noviembre de 2012
NDICE
PAGINA. INTRODUCCIN. ................................................................................................... 3 5.1 Conceptos Bsicos. ........................................................................................... 4 5.2 Propiedades de las Transaciones. .................................................................... 6 5.3 Grados de Consistencia. ................................................................................... 9 5.4 Niveles de Aislamiento. ................................................................................... 11 5.5 Commint y RollBack. ....................................................................................... 14 Conclusin............................................................................................................. 20 REFERENCIAS BIBLIOGRFICAS ...................................................................... 21
ITSJC | 2
[UNIDAD5]
29 de noviembre de 2012
INTRODUCCIN.
La gran cantidad de avances e innovaciones tecnolgicas que se produjeron en los ltimos aos tuvieron como resultado un cambio en la forma de observar a los sistemas de informacin, en general a las aplicaciones computacionales. Existen avances tecnolgicos que se realizan de forma constante en dispositivos de almacenamiento, circuitos, programas y metodologas. Dichos avances van de la mano junto con la demanda de los usuarios y programas para la explotacin de dichos dispositivos mejorados. Un rea en la cual las soluciones estn ocupando tecnologa con nuevas arquitecturas, es en la de los Sistemas distribuidos de informacin. Estos sistemas se refieren al manejo de datos almacenados en muchos Sitios ligados a travs de una red de comunicaciones. Un caso particular de estos sistemas distribuidos es lo que se conoce como base de datos distribuidas. En los sistemas de base de datos distribuidas se persigue la integracin de sistemas de base de datos diversos, no necesariamente homogneos para dar a los usuarios una visin global de la informacin disponible. Este proceso de integracin no implica la centralizacin de la informacin, mas bien, con la ayuda de la tecnologa de redes de computadoras la informacin se mantiene distribuida y los sistemas de bases de datos distribuidos permiten el acceso a ella como si estuviera localizada en un solo lugar. La distribucin de la informacin permite tener accesos rpidos a la misma, tener copias de la informacin para accesos ms rpidos y para tener respaldo en caso de fallas. Un sistema de base de datos distribuida es el resultado de la integracin de una base de datos distribuida con un sistema para su manejo.
ITSJC | 3
[UNIDAD5]
29 de noviembre de 2012
ITSJC | 4
[UNIDAD5]
29 de noviembre de 2012
Por ejemplo, en una transaccin bancaria automatizada, si un banco transfiere dinero desde la cuenta A a la cuenta B, la retirada de fondos de A y el depsito en B deben producirse con xito para procesar los fondos correctamente, de lo contrario la transaccin entera debe cancelarse. Esquematizando el proceso de transacciones tenemos: O se ejecutan todas las operaciones que componen la transaccin, o no se realiza ninguna.
En SQL
xito
Fracaso
ITSJC | 5
[UNIDAD5]
29 de noviembre de 2012
coherencia, aislamiento
Coherencia: Asegura que los datos que observamos no cambian (por otros usuarios)
hasta que acabemos la Transaccin. Despus de terminar una Transaccin la Base de datos no viola ninguna de sus reglas: valores obligatorios, claves nicas, etc.
Responsable: los programadores mediante la definicin adecuada de la integridad referencial: check, triggers, primary key, foreign key, Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se
confirmen. Una Transaccin en ejecucin no puede revelar sus resultados a otras transacciones concurrentes antes de finalizar.
Ms an, si varias transacciones, se ejecutan concurrentemente, los resultados deben ser los mismos que si ellas se hubieran ejecutado secuencialmente. Esto se conoce como seriabilidad debido a que su resultado es la capacidad de volver a ITSJC | 6
[UNIDAD5]
29 de noviembre de 2012
cargar los datos iniciales y reproducir una serie de transacciones para finalizar con los datos en el mismo estado en que estaban despus de realizar transacciones originales. Responsable: el mtodo de concurrencia: mecanismos, reglas, protocolos. Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx ya confirmadas. Responsable: el mtodo o gestor de recuperacin. Inicio de transaccin Cuando no hay ya una transaccin en progreso, y se ejecuta una sentencia LDD o LMD (interactivamente o dentro de una aplicacin) Cada sentencia LDD es tratada como una transaccin N No existe sentencia de tipo BEGIN TRANSACTION Fin de transaccin
COMMIT: Finaliza la transaccin actual y hace permanentes (confirma) los cambios realizados ROLLBACK: Finaliza la transaccin actual y deshace los cambios realizados
Sentencia COMMIT
ITSJC | 7
[UNIDAD5]
29 de noviembre de 2012
Una sentencia COMMIT marca el final de una transaccin correcta, implcita o definida por el usuario. COMMIT hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transaccin sean parte permanente de la base de datos, y adems, libera los recursos mantenidos por la conexin. Su sintaxis es la siguiente:
COMMENT sirve para comentar la transaccin en un mximo 255 caracteres. FORCE fuera de modo manual una transaccin dudosa y es de uso exclusivo en sistemas distribuidos de base de datos.
Sentencia SAVEPOINT Esta sentencia permite crear un punto de restauracin dentro de una transaccin, es decir, un punto al que podremos retroceder deshaciendo todo lo hecho deshaciendo todo lo hecho desde l en adelante. Su sintaxis es la siguiente
Sentencia ROLLBACK
Seala el final sin xito de una transaccin, elimina todas las modificaciones de datos realizadas desde el inicio de la transaccin y tambin libera los recursos que retiene la transaccin. Su sintaxis es la siguiente:
ITSJC | 8
[UNIDAD5]
29 de noviembre de 2012
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. En cualquier momento una transaccin slo puede estar en uno de los siguientes estados.
ITSJC | 9
[UNIDAD5]
29 de noviembre de 2012
Activa (Active): el estado inicial; la transaccin permanece en este estado durante su ejecucin. Parcialmente comprometida (Uncommited): Despus de ejecutarse la ltima transaccin. Fallida (Failed): tras descubrir que no se puede continuar la ejecucin normal. Abortada (Rolled Back): despus de haber retrocedido la transaccin y restablecido la base de datos a su estado anterior al comienzo de la transaccin. Comprometida (Commited): tras completarse con xito.
Aspectos relacionados al procesamiento de transacciones Los siguientes son los aspectos ms importantes relacionados con el procesamiento de transacciones:
Modelo de estructura de transacciones. Es importante considerar si las transacciones son planas o pueden estar anidadas. Consistencia de la base de datos interna. Los algoritmos de control de datos semntico tienen que satisfacer siempre las restricciones de integridad cuando una transaccin pretende hacer un commit. Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir medios de comunicacin entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las transacciones. As tambin, se requieren protocolos para la recuperacin local y para efectuar los compromisos (commit) globales. Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia deben sincronizar la ejecucin de transacciones concurrentes bajo el
ITSJC | 10
[UNIDAD5]
29 de noviembre de 2012
criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas. Protocolos de control de rplicas. El control de rplicas se refiere a cmo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia read-one-write-all (ROWA).
ITSJC | 11
[UNIDAD5]
29 de noviembre de 2012
Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos, pero podra usarse una versin anterior de un registro. Por lo tanto, las lecturas no son consistentes al usar este nivel de aislamiento.
Lectura no repetible. Una transaccin vuelve a leer datos que previamente haba ledo y encuentra que han sido modificados o eliminados por una transaccin cursada. Lectura fantasma. Una transaccin vuelve a ejecutar una consulta, devolviendo un conjunto de registros que satisfacen una condicin de bsqueda y encuentra que otros registro que satisfacen la condicin han sido insertadas por otra transaccin cursada. Los niveles de aislamiento SQL son definidos basados en si ellos permiten a cada uno de los eventos definidos anteriormente. Es interesante notar que el estndar SQL no impone un esquema de cierre especfico o confiere por mandato comportamientos particulares, pero ms bien describe estos niveles de aislamiento en trminos de estos teniendo muchos mecanismos de
Lectura no comprometida
Lectura comprometida
No
S ITSJC | 12
[UNIDAD5]
29 de noviembre de 2012
Lectura repetible
No
No
Secuenciable
No
No
No
Segn el estndar SQL 1992, SQL Server y MySQL permiten todos estos niveles, Oracle slo permite la lectura comprometida y Secuenciable. Los niveles se pueden establecer en ambos para cada transaccin. Sin embargo esto no es necesariamente cierto. El estndar SQL trataba de establecer los niveles de aislamiento que permitiran a varios grados de consistencia para querys ejecutadas en cada nivel de aislamiento. Las lecturas repetibles "REPEATABLE READ" es el nivel de aislamiento que garantiza que un query un resultado consistente. En la definicin SQL estndar, la lectura comprometida "READ COMMITTED" no regresa resultados consistentes, en la lectura no comprometida "READ UNCOMMITTED" las sentencias SELECT son ejecutadas sin realizar bloqueos, pero podra usarse una versin anterior de un registro. Por lo tanto, las lecturas no son consistentes al usar este nivel de aislamiento. A mayor grado de aislamiento, mayor precisin, pero a costa de menor concurrencia.
ITSJC | 13
[UNIDAD5]
29 de noviembre de 2012
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
1 2 3 4 5
CREATE TABLE IF NOT EXISTS dolar ( fecha DATE, precio DECIMAL (8,4), PRIMARY KEY (fecha) ) ENGINE = InnoDB DEFAULT CHARSET=latin1;
Fecha
Precio
2012/02/01 13.0077
2012/02/02 12.8900
ITSJC | 14
[UNIDAD5]
29 de noviembre de 2012
Fecha
Precio
2012/02/03 12.8038
2012/02/07 12.7120
2012/02/08 12.6472
2012/02/09 12.6833
2012/02/10 12.7200
Lecturas consistentes Por default, las tablas InnoDB ejecutan un lectura consistente (consistente read). Esto significa que cuando una sentencia SELECT es ejecutada, MySQL regresa los valores presentes en la base de datos hasta la transaccin ms reciente que ha sido completada. Si alguna transaccin est en progreso, los cambios hechos por alguna sentencia INSERT o UPDATE no sern reflejados. Sin embargo, existe una excepcin: las transacciones abiertas si pueden ver sus propios cambios. Para demostrar esto, necesitamos establecer dos conexiones al servidor MySQL. Observe el caso feliz de las transacciones. Sin violaciones de integridad referencial o otra clase de errores
Cliente 1
Cliente 2
ITSJC | 15
[UNIDAD5]
29 de noviembre de 2012
dolar 12.7120);
INSERT INTO VALUES('2012-02-07', INSERT INTO VALUES('2012-02-08', INSERT INTO VALUES('2012-02-09', INSERT INTO VALUES('2012-02-10',
dolar
dolar
dolar 12.6472);
dolar
dolar 12.6833);
dolar
COMMIT;
ITSJC | 16
[UNIDAD5]
29 de noviembre de 2012
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. Si usa tablas transaccionales (como InnoDB o BDB), puede desactivar el modo autocommit con el siguiente comando: SET AUTOCOMMIT = 0; Tras deshabilitar el modo autocommit poniendo la variable AUTOCOMMIT a cero, debe usar COMMIT para almacenar los cambios en disco o ROLLBACK si quiere ignorar los cambios hechos desde el comienzo de la transaccin.
START TRANSACTION
1 2 3
ITSJC | 17
[UNIDAD5]
29 de noviembre de 2012
4 5 6
Cliente 1
Cliente 2
WHERE
=
MONTH(fecha) = 1; INSERT
resumen (2011, 1, @prom);
SELECT
resumen;
AND
ITSJC | 18
[UNIDAD5]
29 de noviembre de 2012
SELECT
resumen;
FROM
SELECT
resumen;
FROM
ITSJC | 19
[UNIDAD5]
29 de noviembre de 2012
Conclusin.
Una transaccin es una coleccin de acciones que hacen transformaciones consistentes de los estados de un sistema preservando la consistencia del sistema. Una base de datos est en un estado consistente si obedece todas las restricciones de integridad definidas sobre ella. Los cambios de estado ocurren debido a actualizaciones, inserciones, y supresiones de informacin. Por supuesto, se quiere asegurar que la base de datos nunca entra en un estado de inconsistencia. Sin embargo, durante la ejecucin de una transaccin, la base de datos puede estar temporalmente en un estado inconsistente. El punto importante aqu es asegurar que la base de datos regresa a un estado consistente al fin de la ejecucin de una transaccin.
ITSJC | 20
[UNIDAD5]
29 de noviembre de 2012
REFERENCIAS BIBLIOGRFICAS
http://www.itescam.edu.mx/principal/sylabus/763820.php?nombreCarrera=Ingenier %EDa+en+Sistemas+Computacionales http://es.scribd.com/doc/72783799/Unidad-1-Taller-de-Base-de-Datos http://tallerbdd.es.tl/Unidad-1.htm http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r82687.DOCX http://www.itescam.edu.mx/principal/webalumnos/sylabus/asignatura.php?clave_a sig=AEF-1031&carrera=ISIC-2010-224&id_d=136
ITSJC | 21