Transacciones
Enviado por ferchoGomez • 17 de Noviembre de 2014 • 666 Palabras (3 Páginas) • 193 Visitas
¿Qué es una transacción en BD?
Una transacción es una unidad de la ejecución d un programa. Puede consistir en varias operaciones de acceso a la base de datos. Está delimitada por constructoras como bgin transaction y end transaction
¿Qué son los bloqueos?
Un bloqueo es una información del tipo de acceso que se permite a un elemento. El SGBD impone los bloqueos necesarios en cada momento. El gestor de acceso a los datos implementa las restricciones de acceso. En algunos sistemas se permite que el usuario pueda indicar el bloqueo más adecuado (locking hints).
Tipos de bloqueo con respecto a la operación:
• read-locks: sólo permite lectura
• write-locks: permite lectura y escritura
El gestor de bloqueos almacena los bloqueos en una tabla de bloqueos:
(<elemento>, <tipo de bloqueo>, <transacción>)=(E,B,T)
La transacción T tiene un tipo de bloqueo B sobre el elemento E.
Normalmente, E es clave, aunque no siempre, porque varias transacciones pueden bloquear el mismo elemento de forma diferente.
Niveles de bloqueo
Especifica la granularidad del bloqueo
• Fila: Fila individual
• Clave: Fila de un índice
• Página: Páginas (8KB)
• Extent: Extensión (grupo de 8 páginas contiguas de datos o índices)
• Table: Tabla completa
• Database: Base de datos completa
Modos de bloqueo
Especifica el modo en que se bloquea un elemento
• Compartido: para operaciones sólo de lectura. Se permiten lecturas concurrentes, pero ninguna actualización.
• Actualización: para operaciones que pueden escribir. Sólo se permite que una transacción adquiera este bloqueo. Si la transacción modifica datos, se convierte en exclusivo, en caso contrario en compartido.
• Exclusivo: para operaciones que escriben datos. Sólo se permite que una transacción adquiera este bloqueo.
• Intención: se usan para establecer una jerarquía de bloqueo. Por ejemplo, si una transacción necesita bloqueo exclusivo y varias transacciones tienen bloqueo de intención, no se concede el exclusivo.
• Intención compartida: Bloqueo compartido.
• Intención exclusiva: Bloqueo exclusivo.
• Compartido con intención exclusivo. Algunos bloqueos compartidos y otros exclusivos.
• Esquema: para operaciones del DDL.
• Actualización masiva. En operaciones de actualización masiva
Livelock
Espera indefinida de una transacción por un bloqueo que no se llega a conceder porque se cede
a otras transacciones.
Una solución (sistemas operativos): estrategia first-come-first-served (se atiende al primero que llega).
Deadlock
T1: LOCK A; LOCK B; UNLOCK A; UNLOCK B;
T2: LOCK B; LOCK A;
...