ScholarGate
Asistente

Gestión de Transacciones y Concurrencia

La gestión de transacciones y el control de concurrencia permiten que una base de datos ejecute muchas transacciones concurrentes correctamente y sobreviva a fallos, garantizando las propiedades de atomicidad, consistencia, aislamiento y durabilidad (ACID).

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

Una transacción es una secuencia de operaciones de base de datos ejecutadas como una única unidad lógica que es atómica, preserva la consistencia, está aislada de transacciones concurrentes y es duradera una vez confirmada; la gestión de transacciones es el conjunto de mecanismos que aplican estas propiedades bajo concurrencia y fallos.

Scope

Esta área abarca la transacción como unidad de trabajo y los mecanismos que hacen que la ejecución concurrente y propensa a fallos sea correcta: las propiedades ACID; la serializabilidad como criterio de corrección para la concurrencia; los protocolos de bloqueo, marca de tiempo y multiversión que la aplican; los niveles de aislamiento más débiles que sacrifican la consistencia por el rendimiento; y las técnicas de registro y recuperación que aseguran la atomicidad y durabilidad ante caídas. Excluye la confirmación distribuida entre múltiples sitios, que se trata en el área de bases de datos distribuidas y paralelas.

Sub-topics

Core questions

  • ¿Qué garantizan las propiedades ACID y por qué son necesarias?
  • ¿Qué hace que un programa concurrente sea correcto, es decir, serializable?
  • ¿Cómo aplican la serializabilidad los protocolos de bloqueo, marca de tiempo y multiversión?
  • ¿Cómo restauran el registro y la recuperación un estado consistente después de una caída?
  • ¿Cómo sacrifican los niveles de aislamiento más débiles la consistencia por la concurrencia?

Key concepts

  • transacción y confirmación/aborto
  • propiedades ACID
  • serializabilidad y el grafo de precedencia
  • bloqueo de dos fases
  • ordenación por marca de tiempo
  • control de concurrencia multiversión
  • detección y prevención de interbloqueos
  • registro de escritura anticipada
  • niveles de aislamiento

Key theories

Propiedades ACID
La atomicidad (ejecución todo o nada), la consistencia (preservación de las restricciones de integridad), el aislamiento (las transacciones concurrentes parecen ejecutarse de forma independiente) y la durabilidad (los efectos confirmados sobreviven a los fallos) definen conjuntamente el comportamiento transaccional correcto.
Serializabilidad
Un programa concurrente es correcto si es equivalente a alguna ejecución en serie; la serializabilidad por conflictos, probada mediante el grafo de precedencia (serialización), es el criterio práctico que aplican los protocolos de control de concurrencia.
Control de concurrencia y recuperación
Los métodos de bloqueo, ordenación por marca de tiempo y multiversión evitan las intercalaciones no serializables, mientras que el registro de escritura anticipada y los algoritmos de recuperación garantizan la atomicidad y la durabilidad, las dos mitades del procesamiento correcto de transacciones.

Clinical relevance

La gestión de transacciones es lo que hace que las bases de datos sean confiables para el dinero y los registros: asegura que una transferencia bancaria nunca debite una cuenta sin acreditar otra, que una aerolínea nunca reserve dos veces un asiento bajo solicitudes concurrentes, y que los datos confirmados sobrevivan a las caídas, sustentando todos los sistemas transaccionales confiables.

History

El concepto de transacción y las propiedades ACID se formalizaron en el Sistema R de IBM en la década de 1970; Eswaran y sus colegas (1976) establecieron las nociones de consistencia y bloqueo, Jim Gray definió las transacciones y la recuperación, y Bernstein, Hadzilacos y Goodman (1987) sistematizaron la teoría de la serializabilidad. Las contribuciones de Gray al procesamiento de transacciones le valieron el Premio Turing.

Key figures

  • Jim Gray
  • Philip Bernstein
  • Andreas Reuter

Related topics

Seminal works

  • gray1992
  • bernstein1987
  • eswaran1976

Frequently asked questions

¿Qué significa que un programa de transacciones sea serializable?
Un programa concurrente es serializable si su efecto global es idéntico a ejecutar las mismas transacciones una tras otra en algún orden. La serializabilidad es el criterio de corrección de referencia: aunque las transacciones se intercalan para mejorar el rendimiento, el resultado es como si se hubieran ejecutado en serie, por lo que ninguna transacción ve un estado intermedio inconsistente.
¿Por qué se permiten niveles de aislamiento más débiles si pueden producir anomalías?
Aplicar la serializabilidad completa tiene un costo de rendimiento en la contención de bloqueos y los abortos. Muchas aplicaciones pueden tolerar ciertas anomalías a cambio de una mayor concurrencia, por lo que el estándar SQL define niveles de aislamiento más débiles (lectura confirmada, lectura repetible, etc.) que permiten a los desarrolladores intercambiar deliberadamente algo de aislamiento por rendimiento.

Methods for this concept

Related concepts