Gestion des transactions dans les SGBD : états, types et ACID

⚡ Résumé intelligent

La gestion des transactions de base de données considère une ou plusieurs opérations de base de données comme une seule unité logique qui fait passer la base de données d'un état cohérent à un autre. Elle s'appuie sur les propriétés ACID, des états de transaction définis et des planifications pour garantir un accès concurrent correct.

  • (I.e. Unité principale : Une transaction regroupe les opérations de lecture et d'écriture liées de sorte qu'elles réussissent ou échouent ensemble, jamais à moitié.
  • 🧪 Propriétés de l'ACIDE : AtomLa stabilité, la constance, l'isolation et la durabilité garantissent des résultats corrects même en cas de panne ou de concurrence.
  • (I.e. États de la transaction : Les états Actif, partiellement engagé, engagé, échoué et résilié décrivent le cycle de vie d'une transaction.
  • 👥 Pourquoi la concurrence : La base de données étant partagée, de nombreuses transactions s'exécutent simultanément et ne doivent pas corrompre les données des autres.
  • 📋 Des horaires: Un ordonnancement permet de planifier les opérations des transactions parallèles tout en préservant la séquence interne de chaque transaction.
  • 🔗 Sérialisabilité : Une planification concurrente est correcte lorsque son résultat est égal à une exécution séquentielle, évaluée par conflit ou équivalence de vue.
  • 🇧🇷 Récupération: Une transaction ayant échoué est annulée afin que ses écritures partielles n'atteignent jamais la base de données validée.

Gestion des transactions dans les SGBD

Qu'est-ce qu'une transaction de base de données ?

A Transaction de base de données Une transaction est une unité de traitement logique dans un SGBD qui comprend une ou plusieurs opérations d'accès à la base de données. En résumé, les transactions de base de données représentent des événements concrets au sein d'une entreprise.

Dans un SGBD, toutes les opérations d'accès à la base de données effectuées entre les instructions de début et de fin de transaction sont considérées comme une seule transaction logique. Durant la transaction, la base de données est incohérente. Ce n'est qu'une fois la transaction validée que son état passe d'un état cohérent à un autre.

Transaction de base de données passant d'un état cohérent à un autre.
Transaction de base de données

Informations sur les transactions de bases de données

  • Une transaction est une unité de programme dont l'exécution peut ou non modifier le contenu d'une base de données.
  • Le concept de transaction dans le SGBD est exécuté comme une seule unité.
  • Si les opérations de base de données ne mettent pas à jour la base de données mais récupèrent uniquement des données, ce type de transaction est appelé transaction en lecture seule.
  • Une transaction réussie peut faire passer la base de données d'un état cohérent à un autre.
  • Les transactions des SGBD doivent être atomiques, cohérentes, isolées et durables.
  • Si la base de données était dans un état incohérent avant une transaction, elle le resterait après la transaction.

Pourquoi avez-vous besoin de concurrence dans les transactions ?

Une base de données est une ressource partagée. Elle est utilisée simultanément par de nombreux utilisateurs et processus. On peut citer comme exemples les systèmes bancaires, les systèmes de réservation ferroviaires et aériennes, la surveillance des marchés boursiers, ainsi que la gestion des stocks et des caisses des supermarchés.

Ne pas gérer les accès simultanés peut créer des problèmes tels que :

  • Pannes matérielles et plantages système.
  • Exécution simultanée de la même transaction, impasse, ou des performances lentes.

Contrôler cet accès partagé est la tâche de Contrôle de la concurrenceCette méthode utilise le verrouillage et l'horodatage pour entrelacer les transactions de manière sécurisée. Auparavant, il est utile de connaître les états par lesquels passe une transaction.

États des transactions

Les différents états d'un concept de transaction dans un SGBD sont répertoriés ci-dessous :

État Description
État actif Une transaction passe à l'état actif lorsque son exécution commence. Durant cet état, des opérations de lecture ou d'écriture peuvent être effectuées.
Partiellement engagé Une transaction passe à l'état partiellement validée après la fin de la transaction.
Etat engagé Lorsque la transaction atteint l'état validé, son exécution s'est déroulée avec succès et toutes ses modifications sont enregistrées de manière permanente dans la base de données.
État défaillant Une transaction est considérée comme ayant échoué lorsqu'un seul des contrôles échoue, ou si la transaction est annulée alors qu'elle est à l'état actif.
État terminé L'état d'une transaction atteint l'état terminé lorsque la transaction quitte le système et ne peut plus être redémarrée.

Diagramme de transition d'état pour une transaction de base de données

Étudions un diagramme de transition d'état qui met en évidence la façon dont une transaction se déplace entre ces différents états.

  1. Une fois qu'une transaction commence son exécution, elle devient active. Elle peut alors effectuer une opération de lecture ou d'écriture.
  2. Une fois les opérations de lecture et d'écriture terminées, la transaction atteint l'état partiellement validé.
  3. Ensuite, certains protocoles de récupération doivent garantir qu'une panne système n'empêchera pas l'enregistrement définitif des modifications de la transaction. Si cette vérification est concluante, la transaction est validée et passe à l'état validé.
  4. Si le contrôle échoue, la transaction passe à l'état d'échec.
  5. Si une transaction est annulée alors qu'elle est en cours, elle passe à l'état d'échec. Il convient alors de la restaurer pour annuler les modifications apportées à la base de données.
  6. L'état terminé fait référence à la transaction qui quitte le système.

Que sont les propriétés des acides ?

Propriétés ACIDES sont utilisées pour maintenir l'intégrité de la base de données lors du traitement des transactions. ACID, dans le contexte des SGBD, signifie Atomicité, Cconstance, Ile réconfort, et Durabilité.

  • Atomicité : Une transaction est une unité d’opération unique. Soit vous l’exécutez entièrement, soit vous ne l’exécutez pas du tout. Il ne peut y avoir d’exécution partielle.
  • Cohérence: Une fois la transaction exécutée, elle doit passer d’un état cohérent à un autre.
  • Isolement: Une transaction doit être exécutée de manière isolée des autres transactions. Lors d'une exécution simultanée, les résultats intermédiaires des transactions exécutées simultanément ne doivent pas être communiqués entre elles.
  • Durabilité: Après la réussite d'une transaction, les modifications apportées à la base de données doivent être conservées, même en cas de panne du système.

Propriétés ACID dans les SGBD : exemple

Voici un exemple de la propriété ACID dans un SGBD :

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

La transaction 1 transfère 50 $ du compte X vers le compte Y.

La transaction 2 crédite chaque compte d'un paiement d'intérêt de 10 %.

Si les deux transactions sont soumises simultanément, rien ne garantit que la transaction 1 sera exécutée avant la transaction 2, ni l'inverse. Quel que soit l'ordre, le résultat sera identique à celui d'une exécution séquentielle des transactions.

Types d'opérations

En fonction des domaines d'application :

  • Non distribué vs. distribué.
  • Transactions compensatoires.
  • Délai de transaction.
  • En ligne ou par lots.

En fonction des actions :

  • Deux étapes.
  • Limité.
  • Modèle d'action.

Basé sur la structure :

  • Transactions plates ou simples : consistent en une séquence d’opérations primitives exécutées entre une opération de début et une opération de fin.
  • Transactions imbriquées : une transaction qui contient d’autres transactions.
  • Flux de travail.

Qu'est-ce qu'un horaire ?

Un ordonnancement est un processus qui consiste à créer un groupe unique de plusieurs transactions parallèles et à les exécuter une à une. Il doit préserver l'ordre d'apparition des instructions dans chaque transaction. Si deux transactions sont exécutées simultanément, le résultat de l'une peut affecter le résultat de l'autre.

Exemple

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Si la transaction 2 est exécutée avant la transaction 1, des informations obsolètes sur la quantité de produit seront lues. Des horaires sont donc nécessaires.

L'exécution parallèle dans une base de données est inévitable. Elle n'est toutefois autorisée que lorsqu'il existe une relation d'équivalence entre les transactions exécutées simultanément. Cette équivalence est de trois types.

Équivalence des résultats : Si deux planifications affichent le même résultat après exécution, on parle de planifications à résultat équivalent. Elles peuvent donner le même résultat pour certaines valeurs et des résultats différents pour d'autres. Par exemple, une transaction met à jour la quantité de produit tandis qu'une autre met à jour les informations client.

Afficher l'équivalence : L'équivalence de vue se produit lorsque les transactions des deux planifications effectuent une action similaire. Par exemple, une transaction insère les détails d'un produit dans la table des produits, tandis qu'une autre les insère dans la table des archives. La transaction est identique, mais les tables sont différentes.

Équivalence des conflits : Dans ce cas, deux transactions mettent à jour ou consultent le même ensemble de données. Un conflit survient entre les transactions, car leur ordre d'exécution influe sur le résultat.

Qu’est-ce que la sérialisabilité ?

La sérialisabilité est le processus de recherche d'un ordonnancement concurrent dont le résultat est équivalent à celui d'un ordonnancement séquentiel où les transactions sont exécutées l'une après l'autre. Selon le type d'ordonnancement, il existe deux types de sérialisabilité :

  • Sérialisabilité des conflits.
  • Afficher la sérialisabilité.

Les deux diffèrent dans la rigueur avec laquelle ils jugent l'équivalence, comme résumé ci-dessous.

Aspect Sérialisabilité des conflits Voir la sérialisabilité
Base Ordre des opérations conflictuelles Relations entre lecture et rédaction finale
Test Le graphe de précédence doit être acyclique. Voir l'équivalence à un calendrier sériel
Rigueur Plus strict, un sous-ensemble Plus largement, inclut les écrivains aveugles
Coût de la vérification Efficace Difficile à calculer

Tout calendrier sérialisable par conflit est également sérialisable par vue, mais l'inverse n'est pas vrai, c'est pourquoi la sérialisabilité par conflit est le test pratique appliqué par un SGBD.

FAQ

L'opération « commit » rend les modifications d'une transaction permanentes dans la base de données. L'opération « rollback » annule toutes les modifications effectuées depuis le début de la transaction, rétablissant ainsi l'état cohérent de la base de données tel qu'il existait avant son exécution.

AtomL'atomicité garantit que, en cas de panne en cours d'exécution, le travail partiel est ignoré, la transaction étant ainsi considérée comme nulle. La durabilité protège ensuite le travail validé après la récupération.

L'IA analyse les temps d'attente de verrouillage et les graphiques d'interblocage pour repérer les transactions qui en bloquent d'autres, puis recommande un niveau d'isolation ou une modification d'index qui réduit les conflits sans compromettre l'exactitude.

Dans une certaine mesure. En apprenant les schémas de demandes de verrouillage qui ont précédé les interblocages passés, un modèle peut signaler rapidement une combinaison de transactions à risque, permettant ainsi au planificateur de retarder ou de réordonner les opérations avant la formation d'un cycle.

Un ordonnancement séquentiel exécute une transaction entièrement avant le début de la suivante, évitant ainsi toute corruption de données due à l'entrelacement. Il est lent, c'est pourquoi l'objectif est de disposer d'un ordonnancement concurrent sérialisable vers celui-ci.

Résumez cet article avec :