Gestion des transactions et concurrence
La gestion des transactions et le contrôle de la concurrence permettent à une base de données d'exécuter correctement de nombreuses transactions concurrentes et de survivre aux défaillances, garantissant ainsi les propriétés d'atomicité, de cohérence, d'isolation et de durabilité (ACID).
Definition
Une transaction est une séquence d'opérations de base de données exécutées comme une seule unité logique qui est atomique, préservant la cohérence, isolée des transactions concurrentes et durable une fois validée ; la gestion des transactions est l'ensemble des mécanismes qui appliquent ces propriétés en présence de concurrence et de défaillances.
Scope
Ce domaine couvre la transaction en tant qu'unité de travail et les mécanismes qui assurent la correction de l'exécution concurrente et sujette aux défaillances : les propriétés ACID ; la sérialisabilité comme critère de correction pour la concurrence ; les protocoles de verrouillage, d'horodatage et multiversions qui l'appliquent ; les niveaux d'isolation plus faibles qui échangent la cohérence contre la performance ; et les techniques de journalisation et de récupération qui garantissent l'atomicité et la durabilité en cas de pannes. Il exclut le commit distribué sur plusieurs sites, qui est traité dans le domaine des bases de données distribuées et parallèles.
Sub-topics
Core questions
- Que garantissent les propriétés ACID et pourquoi sont-elles nécessaires ?
- Qu'est-ce qui rend un ordonnancement concurrent correct, c'est-à-dire sérialisable ?
- Comment les protocoles de verrouillage, d'horodatage et multiversions appliquent-ils la sérialisabilité ?
- Comment la journalisation et la récupération restaurent-elles un état cohérent après une panne ?
- Comment les niveaux d'isolation plus faibles échangent-ils la cohérence contre la concurrence ?
Key concepts
- transaction et validation/annulation (commit/abort)
- propriétés ACID
- sérialisabilité et le graphe de précédence
- verrouillage à deux phases
- ordonnancement par horodatage
- contrôle de concurrence multiversion
- détection et prévention des interblocages
- journalisation anticipée (write-ahead logging)
- niveaux d'isolation
Key theories
- Propriétés ACID
- L'atomicité (exécution tout-ou-rien), la cohérence (préservation des contraintes d'intégrité), l'isolation (les transactions concurrentes semblent s'exécuter seules) et la durabilité (les effets validés survivent aux défaillances) définissent collectivement le comportement transactionnel correct.
- Sérialisabilité
- Un ordonnancement concurrent est correct s'il est équivalent à une exécution sérielle ; la sérialisabilité par conflit, testée via le graphe de précédence (de sérialisation), est le critère pratique appliqué par les protocoles de contrôle de concurrence.
- Contrôle de concurrence et récupération
- Les méthodes de verrouillage, d'ordonnancement par horodatage et multiversions empêchent les entrelacements non sérialisables, tandis que la journalisation anticipée (write-ahead logging) et les algorithmes de récupération garantissent l'atomicité et la durabilité, les deux piliers d'un traitement transactionnel correct.
Clinical relevance
La gestion des transactions est ce qui rend les bases de données fiables pour les opérations financières et les enregistrements : elle garantit qu'un virement bancaire ne débite jamais un compte sans en créditer un autre, qu'une compagnie aérienne ne surréserve jamais un siège en cas de requêtes concurrentes, et que les données validées survivent aux pannes, ce qui sous-tend tous les systèmes transactionnels fiables.
History
Le concept de transaction et les propriétés ACID ont été formalisés au System R d'IBM dans les années 1970 ; Eswaran et ses collègues (1976) ont établi les notions de cohérence et de verrouillage, Jim Gray a défini les transactions et la récupération, et Bernstein, Hadzilacos et Goodman (1987) ont systématisé la théorie de la sérialisabilité. Les contributions de Gray au traitement des transactions lui ont valu le prix Turing.
Key figures
- Jim Gray
- Philip Bernstein
- Andreas Reuter
Related topics
Seminal works
- gray1992
- bernstein1987
- eswaran1976
Frequently asked questions
- Que signifie pour un ordonnancement de transactions d'être sérialisable ?
- Un ordonnancement concurrent est sérialisable si son effet global est identique à l'exécution des mêmes transactions l'une après l'autre dans un certain ordre. La sérialisabilité est le critère de correction de référence : même si les transactions s'entrelacent pour des raisons de performance, le résultat est comme si elles s'étaient exécutées séquentiellement, de sorte qu'aucune transaction ne voit un état intermédiaire incohérent.
- Pourquoi des niveaux d'isolation plus faibles sont-ils autorisés s'ils peuvent produire des anomalies ?
- L'application d'une sérialisabilité complète a un coût en termes de performance, notamment en contention de verrous et en annulations. De nombreuses applications peuvent tolérer certaines anomalies en échange d'une concurrence accrue. C'est pourquoi la norme SQL définit des niveaux d'isolation plus faibles (lecture validée, lecture répétable, etc.) qui permettent aux développeurs d'échanger délibérément une partie de l'isolation contre un débit plus élevé.