Resumen P2 - BDDII
Resumen P2 - BDDII
Resumen P2 - BDDII
Unidad 5:
Transacciones en SQL:
Conjunto de instrucciones SQL, agrupadas lógicamente,que o bien se ejecutan todas sobre
la base de datos o bien no se ejecuta ninguna.
Principio ACID:
● ATÓMICA (ATOMIC): Todas las operaciones que componen la transacción deben
aplicarse sobre la base de datos o no aplicarse ninguna.
● CONSISTENTE (CONSISTENT): Se mantiene la consistencia de los datos antes y
después de ejecutar la transacción.
● AISLADA (ISOLATED): Cuando muchas transacciones se pueden llevar a cabo
simultáneamente por uno o varios usuarios, la realización de una no debe afectar
jamás a las otras y por tanto no llevar a una situación de error.
● PERMANENTE (DURABLE): Una vez que la transacción ha sido confirmada
(COMMIT) y por tanto los cambios de la base de datos guardados, éstos deben
perdurar en el tiempo aun cuando el gestor de base de datos o el propio equipo
fallen.
Tipos de Transacciones:
En los gestores de datos relacionales modernos disponemos de tres tipos de transacciones
según la forma de iniciarlas:
● De confirmación automática: el gestor de datos inicia una transacción
automáticamente por cada operación que actualice datos. De este modo mantiene
siempre la consistencia de la base de datos, aunque puede generar bloqueos.
● Implícitas: el gestor de datos comienza una transacción automáticamente cada vez
que se produce una actualización de datos, pero el que dicha transacción se
confirme o se deshaga, lo debe indicar el programador.
● Explícitas: son las que iniciamos nosotros "a mano" mediante instrucciones SQL.
somos nosotros, los programadores, los que indicamos qué operaciones va a
abarcar.
Autocommit:
Es una variable de sesión y debe establecerse para cada sesión. Puede deshabilitar el
modo de confirmación automática para cada nueva conexión.
Transacciones y bloqueos:
Las situaciones en que se producen estos bloqueos son:
● Sentencia UPDATE: Las filas afectadas se bloquean hasta que se confirme o
deshaga la transacción.
● Sentencia INSERT: Si existe clave primaria, las filas insertadas quedan bloqueadas
para prevenir que otra transacción pueda introducir otra fila con la misma clave.
● Sentencia LOCK TABLES: Bloquea la tabla entera. No es muy eficiente pues reduce
la concurrencia.
Las situaciones en que se producen estos bloqueos son:
● Sentencia UPDATE: Las filas afectadas se bloquean hasta que se confirme o
deshaga la transacción.
Resumen Parcial 2 - Base De Datos II - Birchner, Rodrigo
● Sentencia INSERT: Si existe clave primaria, las filas insertadas quedan bloqueadas
para prevenir que otra transacción pueda introducir otra fila con la misma clave.
● Sentencia LOCK TABLES: Bloquea la tabla entera. No es muy eficiente pues reduce
la concurrencia.
● Si dentro de una sentencia SELECT se utilizan las clausulas FOR UPDATE o LOCK
IN SHARE MODE, todas las filas devueltas por la sentencia SELECT serán
bloqueadas.
Deadlock:
Esta situación ocurre cuando una transacción A intenta modificar los datos que están siendo
modificados por una transacción B y a su vez esta última intenta modificar los datos que
están siendo modificados por la primera transacción A.
Estrategias de bloqueo:
● Estrategia de bloqueo pesimista: El planteamiento para este caso es que las
transacciones concurrentes son muy fácil de que ocurran y por tanto hay que estar
prevenido.
● Estrategia de bloqueo optimista: Asume que es muy poco probable que el valor de
una fila que acabamos de leer cambie.
Transacción:
Una transacción es una unidad atómica de trabajo que se completa en su totalidad o no se
lleva a cabo en absoluto. Para fines de recuperación, el sistema debe hacer el seguimiento
de cuándo se inicia, termina y confirma o aborta una transacción.
Sistema multiusuario:
En un sistema multiusuario la base de datos pueden acceder simultáneamente múltiples
usuarios (y utilizar los computadores) debido al concepto de multiprogramación, que permite
al computador ejecutar varios programas (o procesos) al mismo tiempo.
● Interpolación:
○ La interpolación mantiene ocupada la CPU cuando un proceso requiere una
operación de entrada o salida (E/S), como la lectura de un bloque del disco.
○ La CPU pasa a ejecutar otro proceso en lugar de permanecer ociosa durante
el tiempo de E/S. La interpolación también evita que un proceso largo retrase
otros procesos.
● Procesamiento paralelo:
○ Si el computador tiene varios procesadores (CPUs), es posible el
procesamiento paralelo de varios procesos.
○ La concurrencia en las bases de datos está desarrollada en términos de
concurrencia interpolada.
Granularidad:
Una base de datos está representada básicamente como una colección de elementos de
datos con nombre. El tamaño de un elemento de datos se conoce como granularidad.
Puede ser un campo de algún registro de la base de datos, o puede ser una unidad más
grande, como un registro o incluso un bloque de disco entero.
Resumen Parcial 2 - Base De Datos II - Birchner, Rodrigo
Tipos de fallos:
● Un fallo del computador: Durante la ejecución de una transacción se produce un
error del hardware, del software o de la red.
● Un error de la transacción o del sistema: Alguna operación de la transacción puede
provocar que falle, como un desbordamiento de entero o una división por cero.
● Errores locales o condiciones de excepción detectados por la transacción: Durante la
ejecución de una transacción, se pueden dar ciertas condiciones que necesitan
cancelar la transacción.
● Control de la concurrencia: El método de control de la concurrencia puede optar por
abortar la transacción, para restablecerla más tarde, porque viola la serialización o
porque varias transacciones se encuentran en estado de bloqueo.
● Fallo del disco: Algunos bloques del disco pueden perder sus datos debido a un mal
funcionamiento de la lectura o la escritura o porque se ha caído la cabeza de
lectura/escritura del disco.
● Problemas físicos y catástrofes: Se refiere a una lista interminable de problemas que
incluye fallos de alimentación o aire acondicionado, fuego, robo, sabotaje,
sobrescritura de discos y cintas por error, y montaje de la cinta errónea por parte del
operador.
Planificaciones de transacciones:
Una planificación S de n transacciones T1, T2, ..., Tn es una ordenación de las operaciones
de esas transacciones sujeta a la restricción de que, por cada transacción Ti que participa
en S, las operaciones de Ti en S deben aparecer en el mismo orden en el que tienen lugar
en Ti.
Resumen Parcial 2 - Base De Datos II - Birchner, Rodrigo
Planificaciones de transacciones:
Dos operaciones de una planificación entran en conflicto si satisfacen estas tres
condiciones:
● Pertenecen a transacciones diferentes.
● Acceden al mismo elemento X.
● Al menos una de las operaciones es write_item( X ).
Planificaciones de transacciones:
Se dice que una planificación S de n transacciones T1, T2, ..., Tn es una planificación
completa si se dan las siguientes condiciones:
● Las operaciones en S son exactamente las operaciones en T1, T2, ..., Tn,
incluyendo una operación commit o abort como última operación de cada
transacción de la planificación.
● Para cualquier par de operaciones de la misma transacción Ti , su orden de
aparición en S es el mismo que su orden de aparición en Ti.
● Para cualesquiera dos operaciones en conflicto, una de las dos debe producirse
antes que la otra en la planificación.
Planificación serializable:
Una planificación S de n transacciones es serializable si es equivalente a alguna
planificación en serie de las mismas n transacciones.
Unidad 6:
Funciones SQL:
Una función en MySQL es una rutina creada para tomar unos parámetros, procesarlos y
retornar en una salida.
Normalmente, utiliza funciones almacenadas para encapsular fórmulas comunes o reglas
comerciales que son reutilizables entre sentencias SQL o programas almacenados.
Unidad 7:
Procedimientos almacenados:
Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse
en el servidor. Una vez que se hace, los clientes no necesitan relanzar los comandos
individuales pero pueden en su lugar referirse al procedimiento almacenado.
Sintaxis general:
Un procedimiento almacenado puede estar compuesto por comandos SQL sencillos, como
recuperaciones y actualizaciones. La forma general para declarar un procedimiento
almacenado es la siguiente:
CREATE PROCEDURE <nombre del procedimiento>
(<parámetros>)
<declaraciones locales>
<cuerpo del procedimiento> ;
Sentencia call:
Teniendo el siguiente procedimiento almacenado:
CREATE PROCEDURE `contar_productos` (IN codigo varchar(5), OUT nproductos
INT)
BEGIN
SELECT COUNT(*) INTO nproductos
FROM productos
WHERE cprincipal=codigo;
END
Resumen Parcial 2 - Base De Datos II - Birchner, Rodrigo
Para saber si la ejecución del procedimiento funciona se debe hacer la llamada al mismo
de la siguiente manera:
CALL contar_productos('001', @cantidad);
select @cantidad;
Unidad 8:
Triggers:
Un Trigger es un programa almacenado(stored program), creado para ejecutarse
automáticamente cuando ocurra un evento en nuestra base de datos. Dichos eventos son
generados por los comandos INSERT, UPDATE y DELETE, los cuales hacen parte del
DML(Data Modeling Languaje) de SQL.
Invocaremos nuestros Triggers para ejecutar un bloque de instrucciones que proteja,
restrinja o preparen la información de nuestras tablas, al momento de manipular nuestra
información.
Crear un Trigger:
La sintaxis es similar a la creación de Procedimientos y Funciones:
CREATE [DEFINER={usuario|CURRENT_USER}]
TRIGGER nombre_del_trigger {BEFORE|AFTER} {UPDATE|INSERT|
DELETE} ON nombre_de_la_tabla
FOR EACH ROW
<bloque_de_instrucciones>
Eliminar un Trigger:
El comando para eliminar casi cualquier cosa en nuestra base de datos:
DROP TRIGGER [IF EXISTS] nombre_trigger