Transacciones (MySQL). Definición: Conjunto de sentencias que se tratan como una sola. Comienzan con BEGIN/START TRANSACTION; Se puede confirmar (COMMIT)

Slides:



Advertisements
Presentaciones similares
Transacciones y Concurrencia en Oracle
Advertisements

Control de Concurrencia y Recuperación
Base de Datos Orientada a Objetos (OODBMS)
Administración de transacciones y bloqueos
Modificación de datos.
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
PRIVILEGIOS DE ACCESO EN INFORMIX
Conceptos de Extracto y Réplica Extracto –Es una copia no actualizable de una BD maestra –Si la BD maestra es modificada, un nuevo Extracto debe ser hecho.
FORMULARIOS EN ACCES Los formularios sirven para definir pantallas, mostrar y editar los registros de una tabla o consulta. Se puede acceder a todos ellos.
Cristian Alaniz - Daniel Hielpos. Agenda - Arquitectura - Tipos de Objetos - Lenguaje de Consulta - Transacciones - Backup y Recuperación - Seguridad.
Manejo de Transacciones
Transacciones, Recuperación y Control de Concurrencia
Bases de Datos Relacionales
Aislamiento Bloqueo.
7. Control de la concurrencia
Administración de Bases de Datos
PARTE I  ANDRI GIOVANNI HERNANDEZ CAMPOSECO. ANDRI GIOVANNI HERNANDEZ CAMPOSECO Check point video: Dead Lock:
PL/SQL Francisco Moreno Universidad Nacional.
Universidad del Cauca – FIET – Departamento de Sistemas
Subconsultas Avanzadas
Ing. Ricardo Carlos Inquilla Quispe
6. Recuperación de fallos
Componentes sintácticos
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
UNITA - IBARRA TRIGGERS
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
UNIVERSIDAD LATINA BASES DE DATOS.
PostgreSQL: Parte 1 Integrantes: Álvaro Marciales Claudio Torrez.
CONCEPTOS BASICOS SQL SERVER SEBASTIAN MARTINEZ GARCIA.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Félix Tovar C.I: Daniel Hernández C.I:
Control de Transacciones.
Elaborado por: Guillermo Baquerizo I Término
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Manipulación de Datos Conceptos básicos.
CONCEPTO SOBRE TRANSACCIONES
TRANSACCIONES DISEÑO DE BASE DE DATOS.
Administración de Bases de Datos
Universidad Tecnológica de Izúcar de Matamoros
Consultas SQL (Base de Datos)
Data Manipulation Language (DML) Lenguaje de Manipulación de Datos
LENGUAJE SQL.
Structured Query Language (Lenguaje Estructurado de Consultas)
LENGUAJE ESTRUCTURADO DE CONSULTAS
Lenguaje Estructurado de Consulta
C ONCURRENCIA Y M ANEJO DE S ESIONES. C ONCURRENCIA Es una propiedad del sistema en el cual muchos calculos se estan ejecutando simultaneamente, y son.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
INSTRUCCIONES Elaboración de la Presentación:
Se producen cuando una aplicación recibe datos no confiables y estos no han sido validados adecuadamente antes de procesarlos, lo cual puede llevar a que.
Diseña y administra base de datos avanzadas
Laboratorio de optimización de BD
UNIVERSIDAD TECNOLOGICA DE IZUCAR DE MATAMOROS TECNOLOGIAS DE LA INFORMACION Y COMUNICACIÓN BASE DE DATOS PARA APLICACIONES MTRO: GONZALO ROSAS CABRERA.
Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Comandos de SQL Prog. Orientada a Eventos. Inserción de datos (INSERT) INSERT….VALUES INSERT INTO Tabla1 (Columna1, Columna2…) VALUES (‘ValorAlfa’, ValorNum…);
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
Bases de Datos SQL.
Paralelización de operaciones
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Administración de Base de Datos Recuperación Prof Mercy Ospina Torres
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Ing. Sanchez Castillo Eddye Arturo Escuela Académica Profesional de Ingeniería de Sistemas.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
UN EJEMPLO DE LECTURA CONSISTENTE EN INNODB
Transcripción de la presentación:

Transacciones (MySQL)

Definición: Conjunto de sentencias que se tratan como una sola. Comienzan con BEGIN/START TRANSACTION; Se puede confirmar (COMMIT) si todas se ejecutan correctamente Se pueden abortar (ROLLBACK) si alguna sentencia no se puede ejecutar  se vuelve al estado de la base de datos en el punto de BEGIN O se hacen todas o ninguna

Ejemplo de transacción necesaria Si se produce un problema entre la 1 y la 2 hay 2 clientes cabreados: al que se le quita el dinero y el que no lo recibe UPDATE cuentas SET dinero = dinero-transferencia WHERE cuenta="cuenta1"; UPDATE cuentas SET dinero = dinero+transferencia WHERE cuenta="cuenta2"; Pasa el dinero de la cuenta1 a la cuenta2

Problemas de concurrencia Problema de la modificación perdida: 2 transacciones acceden a la misma fila y modifican su valor. La última modificación sobreescribe las modificaciones realizadas por las otras. Lectura sucia (DIRTY READ): Una transacción modifica una fila, Una segunda transacción lee esa fila antes de que la primera haga COMMIT. Si la primera hace ROLLBACK, la información leída es incorrecta. Lectura no repetible (NONREPEATEABLE READ): Una transacción lee una fila. Una segunda transacción modifica esa fila. Las siguientes lecturas de la primera transacción producen resultados diferentes al de la primera lectura. Lectura fantasma (PHANTOM READ): Una transacción lee un conjunto de filas. Una segunda transacción modifica los datos. Si la primera transacción repite la lectura con las mismas condiciones de búsqueda, el numero de filas será diferente.

Modificación perdida

Lectura sucia

Lectura no repetible

Lectura fantasma

Nivel de aislamiento (consultar el nivel que se tiene) Nivel de aislamiento global SELECT Nivel de aislamiento de la sesión actual: SELECT

BLOQUEO EXCLUSIVO Una transacción desea actualizar datos, impidiendo a las demás el acceso a los mismos. No dejará a ninguna otra transacción “hurgar” hasta que la bloqueadora haya finalizado. BEGIN; SELECT campo(s) FROM tabla WHERE condicion FOR UPDATE; Una segunda ventana quedará a la espera mientras que la primera devolverá los datos. Para desbloquearla finalizamos la transacción: UPDATE tabla SET campo=valor; INSERT INTO tabla (campo) VALUES (valor); COMMIT; En ese momento MySQL nos devolverá los datos en la transacción bloqueada.

Cambio del nivel de aislamiento Se puede cambiar el nivel de aislamiento global o de una sesión individual mediante: SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE

READ UNCOMMITTED Permite a las transacciones leer los datos actualizados por otra transacción aún sin terminar Las sentencias SELECT son ejecutadas sin realizar bloqueos Dado que no bloquea nada, no aísla, siendo el más rápido. Pueden ocurrir los 3 problemas de concurrencia: Lectura sucia Lectura no repetible Lectura fantasma

READ COMMITTED Por defecto en Oracle o SQL Server. No permite lecturas sucias, pues bloquea todos los registros actualizados por la transacción. Pueden ocurrir 2 problemas de concurrencia: Lectura no repetible Lectura fantasma Los datos leídos pueden ser modificados por otras transacciones

REPEATABLE READ Empleado por defecto en InnoDB (MySQL). Soluciona el problema de los datos repetibles pero no el de los fantasmas. Da por definitiva la primera lectura. Ningún registro leído puede ser cambiado por otra transacción

SERIALIZABLE Evita todos los problemas de aislamiento Reduce el rendimiento Puede provocar la aparición de interbloqueos (una transacción no pueda finalizar nunca debido a que otra lo está bloqueando indefinidamente). Todas las transacciones se realizan sin concurrencia

Ejercicio de problemas en el acceso concurrente Poner la sesión en read uncommited para que se puedan producir los 3 problemas de lectura SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Lectura sucia BEGIN; Update gente set salario=salario*1.1; INSERT INTO gente VALUES(4,’Pepe’,1200); Select * from gente; ROLLBACK; El usuario 1 hace uso de unos datos QUE NO EXISTEN puesto que se ha hecho un ROLLBACK

Lectura no repetible Start transaction; Select * from gente; Update gente set salario=salario*1.1; Select * from gente; Los datos de los registros cambian entre 2 lecturas consecutivas

Lectura fantasma Start transaction; Select * from gente; INSERT INTO gente VALUES(4,’Pepe’,1200); Select * from gente; Aparecen nuevos datos entre lecturas