Taller de Bases de Datos Unidad 5 Concurrencia Talle de bases de Datos 5.1 Conceptos Procesamiento de transacciones: • Operaciones de negocios sobre datos compartidos • Garantizan consistencia y disponibilidad • Acciones complejas como unidad • Escalabilidad • Seguridad 5.1 Conceptoss Talle de bases de Datos Transacciones: Una transacción es una colección de acciones que transforman el estado de los datos mientras que preservan la consistencia de los mismos. Base de datos en estado consistente Inicio La base de datos puede estar en un estado inconsistente durante la ejecución Ejecución de la transacción Base de datos en estado consistente Fin Talle de bases de Datos 5.1 Conceptos Las transacciones proveen: • Ejecucion atómica y confiable en caso de fallas • Correcta ejecución en casos de múltiples accesos. • Correcta administración de réplicas (si son soportadas). Talle de bases de Datos 5.2 Propiedades de Transacciones Propiedades: • Atomicidad – Todo o nada • Consistencia – No hay violación de las limitantes de integridad • Aislamiento – Cambios concurrenes, indivisibles y serializables • Durabilidad – Persistencia de actualizaciones comprometidas Talle de bases de Datos 5.2 Propiedades de Transacciones Atomicidad: • Todas o ninguna de las operaciones de transacción son efectuadas. • La atomicidad necesita en el caso que se interrumpa una transacción por una falla, los resultados parciales deben ser deshechos. • La actividad de preservar la atomicidad de la transacción en presencia de abortos debidos a fallas de introducción de datos, sobrecargas del sistema, o fechas expiradas se llama recuperación de transacción. • La actividad de asegurar la transacción en fallas del sistema se llama “crash recovery”. Talle de bases de Datos 5.2 Propiedades de Transacciones Consistencia: • Consistencia Interna – Una transacción que se ejecuta sola contra una base de datos consistente, se queda en un estado consistente. – Las transacciones no deben violar las restricciones de integridad de la base de datos. • Las transacciones son programas correctos. Talle de bases de Datos 5.2 Propiedades de Transacciones Aislamiento: • Serialidad Si varias transacciones son efectuadas al mismo tiempo, el resultado debe ser igual que si se efectuaran en un orden. • Resultados Incompletos Una transacción incompleta no puede revelar sus resultados. Es necesario evitar los abortos en cascada. Talle de bases de Datos 5.3 Grados de consistencia La ejecución de una transacción debe conducir a un estado de la base de datos consistente (que cumple todas las restricciones de integridad definidas). Una transacción que termina con éxito se dice que está comprometida (commited), una transacción 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. Una transacción sólo puede estar en uno de los siguientes estados: • Activa (Active): el estado inicial; la transacción permanece en este estado durante su ejecución. • Parcialmente comprometida (Uncommited): Después de ejecutarse la última transacción. • Fallida (Failed): tras descubrir que no se puede continuar la ejecución normal. • Abortada (Rolled Back): después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción. • Comprometida (Commited): tras completarse con éxito. Talle de bases de Datos 5.4 Niveles de aislamiento Se obliga el control de la concurrencia usando seguros. Hay tres clases de seguros que pueden ser usados: * Seguro Exclusivo : Ningún otro seguro puede ser ubicado en los datos que tienen un seguro exclusivo. * Seguro Compartido : Los seguros compartidos son ubicados por los procesos de lectura de datos. Un seguro compartido no puede ser puesto en datos que tienen un seguro exclusivo. Más de un seguro compartido es permitido en los datos. * Seguro Actual: este seguro es similar al seguro compartido, excepto que este puede ser gestionado después a seguro exclusivo. Talle de bases de Datos 5.4 Niveles de aislamiento El estándar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en función de tres eventos que son permitidos o no dependiendo del nivel de aislamiento. Estos eventos son: Talle de bases de Datos 5.4 Niveles de aislamiento Lectura Sucia ( dirty read ) En el nivel de aislamiento ' Lectura Sucia ', los procesos no están completamente aislados. El proceso no verifica la existencia de algún seguro antes de leer una fila. Durante la recuperación, se puede examinar cualquier fila, aunque éstas contengan cambios inconclusos. Tales filas son conocidas como ' Datos Sucios. Una fila fantasma es una fila que ha sido insertada en una transacción, la cual es después ejecutada antes de que la transacción finalize. Si bien, la fila fantasma nunca existió en forma permanente, esta podría haber sido visible para un proceso usando un nivel de aislamiento de ' Lectura Sucia' . El nivel ' Lectura Sucia' puede ser útil cuando : * La tabla es estática * El 100% de exactitud, no es tan importante como la velocidad y la imnunidad contra las contiendas. Talle de bases de Datos 5.4 Niveles de aislamiento Lectura Terminada ( committed read ) Una ' Lectura Terminada' intenta adquirir un seguro compartido en una fila antes de tratar de leerla. No se trata de actualizar en un seguro, más bien de adquirirlo. Esto garantiza que una fila no esté siendo actualizada por otro proceso mientras se lee. No se debe olvidar, que un seguro compartido no puede ser adquirido en una fila que está asegurada exclusivamente, el cual es siempre el caso cuando una fila está siendo actualizada. Con ' Lectura Terminada' se puede tener un nivel bajo de aislamiento. Durante una recuperación no se podrían observar datos fantasmas o sucios. Después de que un proceso ha leído la fila, otro proceso puede cambiarla. La ' Lectura Terminada' puede ser útil para : * Exploraciones ( lookups ) * Consultas * Reportes que proporcionan información general Por ejemplo, la ' Lectura Terminada' es útil para reportes generales, tales como análisis de ventas a fin de mes. Talle de bases de Datos 5.4 Niveles de aislamiento SET TRANSACTION ISOLATION LEVEL REPEATABLE READ * Exploraciones, * Consultas, * Reportes que permitan la operación de datos Por ejemplo, los SELECTs que usan ' Posicionador Estable' son útiles para describir tipos de reportes como cotizaciones. Si el nivel de aislamiento de ' Posicionador Estable' es puesto y ningún posicionador es usado, entonces éste funciona como un nivel de ' Lectura Terminada'. Talle de bases de Datos 5.4 Niveles de aislamiento en MySQL Los niveles de aislamiento de transacciones SQL:1992, el nivel predeterminado en InnoDB es REPEATABLE READ. En MySQL 5.0, InnoDB ofrece los cuatro niveles de aislamiento de transacciones descriptos por el estándar SQL. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE Talle de bases de Datos 5.5 Problemas de Transacciones 1. Problema de actualización perdida Ocurre cuando dos programas leen los mismos datos y utilizan los datos como base para un calculo y luego tratan de actualizar. Ejemplo: Inventarios. Talle de bases de Datos 5.5 Problemas de Transacciones 2. Problema de Datos no confirmados Ocurre cuando un programa tiene permiso para ver las actualizaciones no confirmadas de otro y ha actuado sobre ellas. Produciendo resultados erróneos. Talle de bases de Datos 5.5 Problemas de Transacciones 3. Problema de Datos Inconsistentes Ocurre cuando un programa puede ver actualizaciones confirmadas de otro programa que ya había examinado. Talle de bases de Datos 5.5 Problemas de Transacciones 4. Problema de la inserción fantasma Datos inconsistentes debido a una consulta realizada dos veces durante una transacción produce resultados diferentes. Talle de bases de Datos Practica 5 PRACTICA DE MANEJO DE TRANSACCIONES 1.- Desarrollar cuatro procedimientos almacenados a) HacerCompra parametros; orderid, productid, quantity b) Existencia parametros; productid c) TotalProductos parametros: ninguno d) BloquearInsercion parámetro: ninguno. 2.- Tener lista una instrucción de inserción de producto sobre la tabla Products.