Transacciones en SQL. Lic. Gerardo Rossel

Documentos relacionados
Transacciones y concurrencia. Sistemas de persistencia de objetos

Contenido Manejo de Concurren en Mysql... 2 Modos de bloqueo InnoDB... 2 InnoDB y AUTOCOMMIT... 3

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Capítulo 5. Edición de datos

Concurrencia y Recuperabilidad

Manejo de Transacciones

Formato para prácticas de laboratorio

Asignatura: Administración de Bases de Datos. Pedro P. Alarcón Cavero

Transacciones, Recuperación y Control de Concurrencia

Manipulando Datos. y Transacciones

TRANSACCIONES, AISLAMIENTO Y CANDADOS. Bases de Datos Ingeniería de Sistemas Universidad Nacional de Colombia 2013

BASES DE DATOS curso 2002/3

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

SQL Transactions Teacher s Guide

Recuperación del Sistema

CURSORES EN SQL SERVER

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

ÍNDICE INTRODUCCIÓN...13

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

6. PROGRAMACIÓN CON TRANSACT-SQL

DBTechNet. DBTech VET. SQL Transactions. Teoría y ejercicios en la práctica. En español

Lenguaje de manipulación de datos

Tema: Disparadores Parte I.

Sistemas de Información II Tema 2. Sistemas gestores de bases de datos Bibliografía: Elmasri y Navathe: Fundamentos de Sistemas de Bases de Datos 3ª

Software de Comunicaciones (2) Manual de Usuario Consola

LABORATORIO 10. Concurrencia y bloqueos en el SMBD Oracle

Desarrollo Cobol/DB2

Transacciones. M. Andrea Rodríguez-Tastets. II Semestre Universidad de Concepción,Chile andrea

Modificación de datos

Filegroups. Índices y rendimiento (Performance) en el SQL Server. Filegroups (2) Filegroups (3) Páginas. Indices 03/11/2009

SERVICIO NACIONAL DE APRENDIZAJE SENA

8 SQL SERVER 2008 RA-MA

ÍNDICE INTRODUCCIÓN...17

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

Procesamiento de transacciones Fernando Berzal,

Número de Práctica: 1 Nombre de la Práctica: Comunicación Cliente Servidor Vía Sockets Java con Sistema Manejador de Bases de Datos

Tema 33. El lenguaje SQL

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

Introducción a los Sistemas de Gestión de Bases de Datos

DESARROLLO WEB EN ENTORNO SERVIDOR

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

Tema 4. Manipulación de datos con SQL

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Laboratorio Informix. Stored Procedures Triggers

Principales rutinas de mantenimiento

ANÁLISIS TEÓRICO/PRÁCTICO DE LA TRADUCCIÓN DE: INFORMIX-4GL A JAVA ÁNGEL SUÁREZ GARCÍA JUNIO DE 2008

Transacciones en SQL Server Autor: Cesar Manivesa (manivesa)

Lenguaje SQL para Novatos

TEMA 4.4: Recuperación ante fallos

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

PROGRAMANDO UNA BASE DE DATOS PostgreSQL ADMINISTRACIÓN INTRODUCCIÓN (L32)

Bases de Datos / Elementos de Bases de Datos 2015

Oracle Database: Introducción a SQL

Motores de almacenamiento en MySQL 5.0 por Mario López y Juan A. Sánchez

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1. Copyright 2008, Oracle. All rights reserved.

Tema 6. Transacciones y seguridad

Java y MySQL. Ciclo de ejecución

Otros objetos de Base de Datos

SQL Los fundamentos del lenguaje

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

Diseño de bases de datos

CURSO DE SQL SERVER 2005

GESTION DE TRANSACCIONES

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

Gestión de Segmentos de Rollback. Qué es una transacción? Secuencia de operaciones que han de ejecutarse de forma atómica.

GALA. ADO Modo Conectado. Modelo de Base de Datos Relacional. m018a Curso Manejo de Datos con Visual Basic 2010, 24 h

Bases de Datos / Elementos de Bases de Datos Que es un Stored Procedure? Stored Procedures: Ventajas

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

ADMINISTRACIÓN DE BASE DE DATOS

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero

MANUALITO MS-SQL SERVER

INSTITUTO POLITÉCNICO NACIONAL. ESCUELA SUPERIOR DE CÓMPUTO. WEB II. MySQL. Que el alumno aprenda a usar el servidor de base de datos MySql.

OBJETIVOS METODOLOGÍA PROCEDIMIENTO 1.- Trabajo con el servidor de bases de datos Sybase

Administración Básica de Oracle9i

Nuevas Características de la Versión 9.1 de PostgreSQL. Alcides Rivera Posso

Sistemas de Bases de Datos II ITS / ITSB EMT CETP

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS

Bases de datos 1. Teórico: Modelo Relacional

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Grandes volúmenes de datos Particionamiento. bases de datos

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Temario. Índices simples Árboles B Hashing

Formato para prácticas de laboratorio

Teknoda - Notas técnicas Tips de AS400 iseries System i Tip Nro. 40

ASIGNATURA: BASE DE DATOS II

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

Administración de transacciones y bloqueos

Integridad en sistemas de bases de datos relacionales

Transcripción:

Transacciones en SQL Lic. Gerardo Rossel 2016

Conceptos Generales

Transacciones Implícitas/Explicitas ISO SQL: cualquier comando SQL al comienzo de una sesión o inmediato posterior al fin de una transacción comienza automáticamente una nueva transacción (DB2 y Oracle)

Transacciones Implícitas/Explicitas ISO SQL: cualquier comando SQL al comienzo de una sesión o inmediato posterior al fin de una transacción comienza automáticamente una nueva transacción (DB2 y Oracle) SQL Server, MySQL/InnoDB, PostgreSQL funcionan por defecto en modo AUTOCOMMIT MySQL/InnoDB: SET AUTOCOMMIT = 0 1 SQL Server: SET IMPLICIT_TRANSACTIONS [ON OFF] PostgreSQL: SET AUTOCOMMIT = [ON OFF]

Transacciones BEGIN/START TRANSACTION; COMMIT; ROLLBACK;

Transacciones BEGIN/START TRANSACTION; COMMIT; ROLLBACK; INSERT INTO Tabla ( id, s ) VALUES (1, primero ) ; INSERT INTO Tabla ( id, s ) VALUES (2, segundo ) ; INSERT INTO Tabla ( id, s ) VALUES (3, tercero ) ; SELECT * FROM Tabla ; ROLLBACK; SELECT * FROM Tabla ;

Transacciones BEGIN/START TRANSACTION; COMMIT; ROLLBACK; INSERT INTO Tabla ( id, s ) VALUES (1, primero ) ; INSERT INTO Tabla ( id, s ) VALUES (2, segundo ) ; INSERT INTO Tabla ( id, s ) VALUES (3, tercero ) ; SELECT * FROM Tabla ; ROLLBACK; SELECT * FROM Tabla ; AUTOCOMMIT Una sentencia SQL enviada a la base de datos en modo AUTOCOMMIT no puede ser desecha (rollback)

Precaución Supongamos lo siguiente:

Precaución Supongamos lo siguiente:

Precaución Supongamos lo siguiente: SQL Server SET XACT_ABORT { ON OFF }

Precaución

Precaución

Precaución

(ISO-89)SQLCODE (ISO-92)SQLSTATE 5 Caracteres : Clase 2 Caracteres 0000 Exito 01 Warning 02 No Data 07 Dynamic SQL ERROR 08 Connection Exception 22 Data Exception 40 Transaction Rollback Subclase 3 Caracteres

Niveles de Aislamiento Niveles de aislamiento El nivel de aislamiento controla el grado en que una transacción dada está expuesta a la acciones de otras transacciones ejecutándose simultáneamente. Problemas: Lost Update Dirty Read Non-Repeatable Read (Fuzzy Read) Phantom Read

Niveles de Aislamiento SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED;

Niveles de Aislamiento Defecto SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED;

PostgreSQL

PostreSQL: MVCC MVCC PostgreSQL usa control de concurrencia multiversión Cada transacción ve un snapshot a partir de su comienzo (timestamp). No importa lo que otras transacciones hagan mientras esta en ejecución. Las lecturas no bloquean a las escrituras ni las escrituras bloquean a las lecturas Las escrituras bloquean a otras escrituras sólo cuando se actualiza la misma fila.

Niveles de Aislamiento MVCC En PostgreSQL se pueden definir los 4 niveles del standard SQL pero internamente los soportados son 3: Read Committed, Repeatable Read y Serializable. Read uncommitted en realidad se comporta como Read Committed Repeatable Read. En el ISO SQL se permite Phantom Read pero PG no lo permite. Es en realidad equivalente a snapshot isolation Serializable: utiliza una técnica denomiada Serializable Snapshot Isolation. Es similar Repeatable Read pero monitorea si se produce algún comportamiento que pueda violar la serializabilidad.

SQL Server

Niveles de Aislamiento SQLServer Read Commited (Optimista o Pesimista, RCSI o RCI): SET READ_COMMITTED_SNAPSHOT ON (multi-versión) Versiones de filas (row versioning) SET READ_COMMITTED_SNAPSHOT OFF (default) Shared locks (read lock) son levantados inmediatamente.

Niveles de Aislamiento SQLServer Read Commited (Optimista o Pesimista, RCSI o RCI): SET READ_COMMITTED_SNAPSHOT ON (multi-versión) Versiones de filas (row versioning) SET READ_COMMITTED_SNAPSHOT OFF (default) Shared locks (read lock) son levantados inmediatamente. RCSI Precio producto 922 es $8,89

Repeatable Read Locks en repeateable red Shared locks (read lock) se mantienen durante toda la transacción

Repeatable Read Locks en repeateable red Shared locks (read lock) se mantienen durante toda la transacción Write Locks Los locks exclusivos siempre deben mantenerse hasta el final de una transacción, sin importar el nivel de aislamiento o modelo de concurrencia, de modo que una transacción pueda revertirse si es necesario

Niveles de Aislamiento SQLServer: Snapshot (SI) Optimista Permite a los procesos leer viejas versiones de los datos que fueron commited si la versión actual esta locked. ALTER DATABASE databasename SET ALLOW_SNAPSHOT_ISOLATION ON;

Niveles de Aislamiento SQLServer: Snapshot (SI) Optimista Permite a los procesos leer viejas versiones de los datos que fueron commited si la versión actual esta locked. ALTER DATABASE databasename SET ALLOW_SNAPSHOT_ISOLATION ON; Atención No es equivalente a serializable. Pueden haber dos transacciones que se ejecuten simultáneamente y produzcan un resultado imposible en una ejecución serial. Aunque evita los mismos problemas

Niveles de Aislamiento SQLServer: Snapshot (SI) Optimista Permite a los procesos leer viejas versiones de los datos que fueron commited si la versión actual esta locked. ALTER DATABASE databasename SET ALLOW_SNAPSHOT_ISOLATION ON; Atención No es equivalente a serializable. Pueden haber dos transacciones que se ejecuten simultáneamente y produzcan un resultado imposible en una ejecución serial. Aunque evita los mismos problemas

Snapshot (SI) Figura tomada de: "Microsoft SQL 2012 Internals" -Kalen Delaney et. al.

Niveles de Aislamiento SQLServer set transaction isolation level SERIALIZABLE/SNAPSHOT begin tran update marbles set color = White where color = Black

Niveles de Aislamiento SQLServer set transaction isolation level SERIALIZABLE/SNAPSHOT begin tran update marbles set color = White where color = Black set transaction isolation level SERIALIZABLE/SNAPSHOT begin tran update marbles set color = Black where color = White commit tran

Niveles de Aislamiento SQLServer set transaction isolation level SERIALIZABLE/SNAPSHOT begin tran update marbles set color = White where color = Black set transaction isolation level SERIALIZABLE/SNAPSHOT begin tran update marbles set color = Black where color = White commit tran commit tran select * from marbles

Niveles de Aislamiento SQLServer: Serializable Pesimista Requiere que se realice lock sobre datos que han sido leídos y también sobre datos que no existen Key-range lock: requiere índice sobre la columna. Table-lock

SQL server Niveles de Aislamiento Figura tomada de: "Microsoft SQL 2012 Internals" -Kalen Delaney et. al.

Bibliografía Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems) Gerhard Weikum y Gottfried Vossen Microsoft SQL 2012 Internals. Kalen Delaney y otros Fundamentos de Bases de Datos Abraham Silberschatz, Henry F. Korth y S Sudarshan Serializable Isolation for Snapshot Databases Michael J. Cahill, Uwe Röhm, and Alan D. Fekete. 2008. ACM SIGMOD international conference on Management of data (SIGMOD 08) Mimer SQL 10.0 Technical Description A critique of ANSI SQL isolation levels H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O Neil,, and P. O Neil Proceedings of ACM SIGMOD International Conference on Management of Data,1995