Sie sind auf Seite 1von 21

Caractersticas de

Transacciones y Tipos de
Bloqueo
Base de Datos Distribuidas
Moreno Manrique Raquel
Transacciones en tablas InnoDB
Ejemplo:
Transaccin bancaria:
-Si se transfiere una cantidad de dinero desde la cuenta de
una persona a otra cuenta, se realizan las consultas:
- Si el proceso falla y no se realiza completamente la
consulta, es necesario empaquetar la consulta en una
transaccin.
Instrucciones de transacciones
Para realizar transacciones se requieren de instrucciones
bsicas para que MySQL sepa que queremos realizar una
transaccin.
-BEGIN (para indicar el inicio)
-COMMIT (indica el final de la transaccin)
*slo al procesar commit las consultas sern
permanentes.
-ROLLBACK (usada cuando algo sale mal, y se quiere
invertir la parte incompleta)
Ejemplo:
Se crea la tabla
Se le insertan valores:
Empaquetamos la consulta
Si se invierte la accin, se deshar la
transaccin que todava no se ha confirmado
Lecturas Coherentes
Las tablas InnoDB realizan una lectura coherente.
Al realizar una consulta de seleccin MySQL devuelve los
valores presentes en la base de datos hasta la ltima
transaccin completa
Si en la consulta existe una transaccin en progreso, los
resultados de las instrucciones UPDATE o INSERT no se
podrn reflejar, a excepcin: la transaccin abierta puede
modificarse
Lectura de bloqueo para
actualizaciones
.Cuando varios usuarios agregan un nuevo registro en la
tabla, puede que se cree un registro duplicado.
.Para evitar un registro duplicado, se requiere de un
bloqueo de actualizacin, en la operacin de seleccin.
Se elimina el registro duplicado
Se establece el bloque de actualizacin
La ventana 2 devolver los resultados de la consulta
Bloqueo de lectura en modo
compartido
Este tipo de bloqueo no devuelve ningn valor
si el valor que est leyendo ha sido modificado
por otra transaccin incompleta.
Devuelve el valor, pero no forma parte de una
transaccin la cual modifique el valor
Ejemplo
Confirmaciones automticas
De manera automtica, MySQL confirma
automticamente las instrucciones.
Transacciones en tablas DBD
Tablas DBD procesan las transacciones de una
forma distinta a las tablas de InnoDB
Comportamientos Transaccionales
Comantos que finalizan automticamente una transaccin.
Se comportan como si se hubiera realizado una operacin
de confirmacin
-BEGIN
-ALTERTABLE
-CREATE INDEX
-RENABLE TABLE
-TRUNCATE
-DROP TABLE
-DROP DATABASE
Bloque de Tablas
Existen dos tipos de bloque de tabla:
-Bloqueos de lectura: Permiten realizar lecturas
sobre la tabla, bloqueando las operaciones de
escritura.
-Bloque de escritura: Impiden la realizacin de
operaciones de lectura o escritura sobre la
tabla durante el bloqueo
.Sintaxis para bloquear una tabla:
.Sintaxis para desbloquear la tabla:
-Los bloqueos de escritura tienen prioridad sobre los
bloqueos de lectura.
*Si un subproceso espera un bloqueo de lectura y
recibe un bloqueo de escritura; el bloqueo de lectura
deber esperar hasta obtener el bloqueo de escritura y a
su liberacin
-Se puede variar el comportamiento del bloque de
escritura, especificando una prioridad inferior para este:
con la palabra clave LOW PRIORITY.
Los bloqueos de tabla se suelen utilizar sobre tablas que
no admiten transacciones.
*Es necesario utilizar los comandos BEGIN y COMMIT
para evitar anomalas en los datos.
Evitar bloqueo de tablas
*Evitar bloqueos de tablas en las que se necesiten realizar
un gran nmero de actualizaciones
-Distintas formas de evitar los bloqueos de tablas:
.Realizar una operacin de lectura y actualizacin dentro
de la misma instruccin (actualizacin incremental)
Independientemente del orden de las instrucciones, la
actualizacin se realiza sobre el valor reciente.
Niveles de transaccin
Se puede modificar el comportamiento predeterminado al
trabajar con transacciones
-Niveles de aislamiento de transaccin.
.READ UNCOMMITTED
permite transacciones para leer datos sin confirmar
desde otras transacciones (es lo que se conoce como
lectura sucia)
.REPEATABLE READ
No permite lecturas no susceptibles de repeticin (que
son las que se dan cuando otra transaccin ha
modificado 10s datos, incluso si se han confirmado).
.SERIALIZABLE
No permite lecturas fantasma, que tienen lugar cuando
otra transaccin ha confirmado una nueva fila que
coincide con 10s resultados de nuestra consulta. Los
datos sern los mismos en cada oracin
Sintaxis para cambiar el nivel de transaccin:
Donde ambito puede ser global o session.
Esta opcin reemplaza el mbito habitual de la instruccin,
la cual se encarga de establecer el nivel de aislamiento en
el que debe comenzar la transaccin.
-Global: establece el nivel para todas las nuevas
transacciones.
-Session: para las nuevas transacciones de dicho
subproceso

Das könnte Ihnen auch gefallen