Podcast
Questions and Answers
¿Cuál es la condición necesaria para que un grafo de precedencia sea válido?
¿Cuál es la condición necesaria para que un grafo de precedencia sea válido?
- Que tenga ciclos
- Que sea un grafo dirigido (correct)
- Que sea un grafo no dirigido
- Que tenga nodos repetidos
¿Cuál es el nombre del teorema relacionado con la complejidad del proceso de serialización?
¿Cuál es el nombre del teorema relacionado con la complejidad del proceso de serialización?
- Teorema de la serialización
- Teorema de la conflict serialización
- Teorema de la complejidad exponencial (correct)
- No se menciona explícitamente
¿Qué representa cada nodo en un grafo de precedencia?
¿Qué representa cada nodo en un grafo de precedencia?
- Un conjunto de instrucciones
- Una transacción (correct)
- Un conjunto de transacciones
- Una operación
¿Cuál es el nombre del proceso que se muestra en el ejemplo?
¿Cuál es el nombre del proceso que se muestra en el ejemplo?
¿Cuál es el resultado de la permutación mostrada en el ejemplo?
¿Cuál es el resultado de la permutación mostrada en el ejemplo?
¿Qué tipo de grafo es el grafo de precedencia?
¿Qué tipo de grafo es el grafo de precedencia?
¿Cuál es la complejidad del proceso de serialización?
¿Cuál es la complejidad del proceso de serialización?
¿Qué ocurre si se encuentra un ciclo en un grafo de precedencia?
¿Qué ocurre si se encuentra un ciclo en un grafo de precedencia?
¿Cuál es el problema en la situación de deadlock en 2PL?
¿Cuál es el problema en la situación de deadlock en 2PL?
¿Qué tipo de lock se está utilizando en el ejemplo de deadlock?
¿Qué tipo de lock se está utilizando en el ejemplo de deadlock?
¿Qué es lo que ocurre cuando una transacción realiza un COMMIT?
¿Qué es lo que ocurre cuando una transacción realiza un COMMIT?
¿Qué ocurre cuando una transacción empieza?
¿Qué ocurre cuando una transacción empieza?
¿Por qué se produce un deadlock en el ejemplo?
¿Por qué se produce un deadlock en el ejemplo?
¿Qué es lo que sucede cuando se conecta a una base de datos?
¿Qué es lo que sucede cuando se conecta a una base de datos?
¿Qué es lo que hace un TRANSACTION?
¿Qué es lo que hace un TRANSACTION?
¿Cuál es el papel de un COMMIT en una TRANSACTION?
¿Cuál es el papel de un COMMIT en una TRANSACTION?
¿Qué características de las transacciones se encarga de asegurar el Transaction Manager?
¿Qué características de las transacciones se encarga de asegurar el Transaction Manager?
¿Cuál es el objetivo principal del Log y Recovery Manager?
¿Cuál es el objetivo principal del Log y Recovery Manager?
¿Qué pasa cuando el acceso es concurrente?
¿Qué pasa cuando el acceso es concurrente?
¿Qué es la capacidad de permitir que múltiples usuarios o procesos accedan o modifiquen la base de datos al mismo tiempo?
¿Qué es la capacidad de permitir que múltiples usuarios o procesos accedan o modifiquen la base de datos al mismo tiempo?
¿Cuál es el resultado de la transferencia doble concurrente en la opción 1?
¿Cuál es el resultado de la transferencia doble concurrente en la opción 1?
¿Cuál es el resultado de la transferencia doble concurrente en la opción 2?
¿Cuál es el resultado de la transferencia doble concurrente en la opción 2?
¿Qué características de las transacciones se encarga de asegurar el Log y Recovery Manager?
¿Qué características de las transacciones se encarga de asegurar el Log y Recovery Manager?
¿Por qué es importante manejar la concurrencia en las transacciones?
¿Por qué es importante manejar la concurrencia en las transacciones?
¿Qué sucede cuando se producen transacciones concurrentes sin un manejo adecuado?
¿Qué sucede cuando se producen transacciones concurrentes sin un manejo adecuado?
¿Cuál es el objetivo principal del Transaction Manager y del Log y Recovery Manager?
¿Cuál es el objetivo principal del Transaction Manager y del Log y Recovery Manager?
¿Qué ocurre cuando se produce una transacción de escritura-lectura?
¿Qué ocurre cuando se produce una transacción de escritura-lectura?
¿Qué tipo de transacciones no se pueden intercambiar en un schedule?
¿Qué tipo de transacciones no se pueden intercambiar en un schedule?
¿Cuál es la condición para permutar un par de operaciones consecutivas en un schedule?
¿Cuál es la condición para permutar un par de operaciones consecutivas en un schedule?
¿Qué significa que un schedule es conflict serializable?
¿Qué significa que un schedule es conflict serializable?
¿Qué ocurre cuando se produce una transacción de escritura-escritura?
¿Qué ocurre cuando se produce una transacción de escritura-escritura?
¿Cuál es el nombre de las transacciones que no se pueden intercambiar en un schedule?
¿Cuál es el nombre de las transacciones que no se pueden intercambiar en un schedule?
¿Qué es una transacción de lectura?
¿Qué es una transacción de lectura?
¿Cuál es el nombre de las transacciones que se pueden intercambiar en un schedule?
¿Cuál es el nombre de las transacciones que se pueden intercambiar en un schedule?
¿Qué instrucción se utiliza para cancelar una transacción?
¿Qué instrucción se utiliza para cancelar una transacción?
¿Qué es un SAVEPOINT en una transacción?
¿Qué es un SAVEPOINT en una transacción?
¿Qué sucede cuando se ejecuta un ROLLBACK TO SAVEPOINT?
¿Qué sucede cuando se ejecuta un ROLLBACK TO SAVEPOINT?
¿Qué tipo de lock se utiliza cuando se selecciona una tabla completa?
¿Qué tipo de lock se utiliza cuando se selecciona una tabla completa?
¿Qué es un 'fantasma' en una transacción?
¿Qué es un 'fantasma' en una transacción?
¿Qué instrucción se utiliza para establecer el nivel de aislamiento en una transacción?
¿Qué instrucción se utiliza para establecer el nivel de aislamiento en una transacción?
¿Qué significa el nivel de aislamiento READ ONLY?
¿Qué significa el nivel de aislamiento READ ONLY?
¿Qué tipo de lock se utiliza cuando se selecciona una tupla específica?
¿Qué tipo de lock se utiliza cuando se selecciona una tupla específica?
¿Qué sucede cuando se tiene un shared lock en una transacción?
¿Qué sucede cuando se tiene un shared lock en una transacción?
¿Qué instrucción se utiliza para iniciar una transacción?
¿Qué instrucción se utiliza para iniciar una transacción?
Study Notes
Transacciones
- UnTransaction Manager se encarga de asegurar la Isolation y Consistency, mientras que el Log y Recovery Manager se encargan de asegurar la Atomicity y Durability.
Ejemplo de Transacción
- Supongamos un ejemplo de transferencia de dinero entre dos cuentas:
- UPDATE cuentas SET saldo = saldo - v WHERE cid = 1
- UPDATE cuentas SET saldo = saldo + v WHERE cid = 2
Concurrente
- El acceso concurrente es la capacidad de permitir que múltiples usuarios o procesos accedan o modifiquen la base de datos al mismo tiempo.
Ejemplo de Transferencia Doble
- Supongamos que Alice y Bob tienen una cuenta bancaria en común y ambos quieren transferir dinero a Charles:
- Proceso Alice: READ(saldoAB, x), WRITE(saldoAB, x - 100), READ(saldoC, x), WRITE(saldoC, x + 100)
- Proceso Bob: READ(saldoAB, y), WRITE(saldoAB, y - 200), READ(saldoC, y), WRITE(saldoC, y + 200)
Problemas con el Acceso Concurrente
- El problema de la doble escritura y lectura puede ocurrir cuando hay acceso concurrente.
Permutaciones no Permitidas
- No se pueden cambiar el orden de las operaciones en un schedule a la ligera, por ejemplo:
- T1: READ(A), WRITE(A)
- T2: WRITE(A), READ(A)
Acciones Conflictivas
- Una acción pueden ser conflictiva si usan el mismo recurso y ambas no son de lectura.
Grafo de Precedencia
- Un grafo de precedencia es un grafo dirigido y sin ciclos donde los nodos corresponden a instrucciones (transacciones en este caso).
SQL y Transacciones
- START TRANSACTION; SELECT a_nombre FROM Actores; COMMIT;
- En algunos lenguajes de programación, la conexión a la base de datos implica un START TRANSACTION automático.
Cancelar una Transacción
- START TRANSACTION; UPDATE Actores SET bio = 'El mejor actor' WHERE nombre = 'Adrian Soto'; ROLLBACK;
Savepoints
- START TRANSACTION; UPDATE Actores SET bio = 'El mejor actor' WHERE nombre = 'Adrian Soto'; SAVEPOINT MejorActor; UPDATE Actores SET bio = 'El peor actor' WHERE nombre = 'Juan Reutter'; ROLLBACK TO SAVEPOINT MejorActor;
Granularidad de Locks
- SELECT S.rating, MIN(S.age) FROM Sailors AS S WHERE S.rating = 8;
- Lock seguro: La tabla S
- Lock razonable: Tuplas de S con rating = 8
"Fantasmas" en Transacciones
- T1: SELECT S.rating, MIN(S.age) FROM Sailors AS S WHERE S.rating = 8;
- T2: INSERT INTO Sailors AS S VALUES (5,22,8);
- "Fantasma" en la transacción T1, el registro (5,22,8) no existía en la tabla Sailors cuando se inició la transacción.
Nivel de Aislamiento
- SET TRANSACTION ISOLATION LEVEL READ ONLY
- SET TRANSACTION ISOLATION LEVEL READ WRITE
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
El administrador de transacciones garantiza la isolation y consistencia, mientras que el administrador de registro y recuperación se encarga de la atomicidad y durabilidad. Evalúa tus conocimientos sobre transacciones concurrentes.