Contrôle de la concurrence des SGBD : protocoles basés sur l'horodatage et le verrouillage

Qu’est-ce que le contrôle de concurrence ?

Contrôle de la concurrence dans le système de gestion de base de données est une procédure de gestion d'opérations simultanées sans entrer en conflit les unes avec les autres. Il garantit que les transactions de la base de données sont effectuées simultanément et avec précision pour produire des résultats corrects sans violer l'intégrité des données de la base de données respective.

L'accès simultané est assez simple si tous les utilisateurs se contentent de lire des données. Il n’y a aucun moyen qu’ils puissent interférer les uns avec les autres. Cependant, pour toute base de données pratique, elle comporterait un mélange d'opérations READ et WRITE et la concurrence est donc un défi.

Le contrôle de concurrence du SGBD est utilisé pour résoudre de tels conflits, qui se produisent principalement avec un système multi-utilisateurs. Par conséquent, le contrôle de concurrence est l'élément le plus important pour le bon fonctionnement d'un système de gestion de base de données dans lequel deux ou plusieurs transactions de base de données sont exécutées simultanément, ce qui nécessite un accès aux mêmes données.

Problèmes potentiels de concurrence

Voici quelques problèmes que vous rencontrerez probablement lors de l’utilisation de la méthode de contrôle de concurrence du SGBD :

  • Mises à jour perdues se produire lorsque plusieurs transactions sélectionnent la même ligne et mettent à jour la ligne en fonction de la valeur sélectionnée
  • Des problèmes de dépendance non validés se produisent lorsque la deuxième transaction sélectionne une ligne qui est mise à jour par une autre transaction (sale lecture)
  • Lecture non répétable se produit lorsqu'une deuxième transaction tente d'accéder plusieurs fois à la même ligne et lit des données différentes à chaque fois.
  • Problème de résumé incorrect se produit lorsqu'une transaction résume la valeur de toutes les instances d'un élément de données répété et que la deuxième transaction met à jour quelques instances de cet élément de données spécifique. Dans cette situation, le résumé résultant ne reflète pas un résultat correct.

Pourquoi utiliser la méthode Concurrency ?

Les raisons d'utiliser la méthode de contrôle de concurrence sont les SGBD :

  • Appliquer l’isolement par exclusion mutuelle entre transactions conflictuelles
  • Pour résoudre les problèmes de conflit de lecture-écriture et d'écriture-écriture
  • Préserver la cohérence de la base de données en préservant constamment les obstructions à l'exécution
  • Le système doit contrôler l'interaction entre les transactions simultanées. Ce contrôle est réalisé à l'aide de schémas de contrôle concurrent.
  • Le contrôle de concurrence aide à garantir la sérialisabilité

Exemple

Supposons que deux personnes se rendent aux kiosques électroniques en même temps pour acheter un billet de cinéma pour le même film et la même heure de spectacle.

Cependant, il ne reste qu’une seule place pour la séance de cinéma dans cette salle particulière. Sans contrôle de concurrence dans le SGBD, il est possible que les deux cinéphiles finissent par acheter un billet. Cependant, la méthode de contrôle de concurrence ne permet pas que cela se produise. Les deux cinéphiles peuvent toujours accéder aux informations inscrites dans la base de données des sièges de cinéma. Mais le contrôle de concurrence ne fournit un ticket qu’à l’acheteur qui a terminé le processus de transaction en premier.

Protocoles de contrôle de concurrence

Différents protocoles de contrôle de concurrence offrent différents avantages entre le degré de concurrence qu'ils autorisent et le montant des frais généraux qu'ils imposent. Voici les techniques de contrôle de concurrence dans le SGBD :

  • Protocoles basés sur le verrouillage
  • Protocole de verrouillage en deux phases
  • Protocoles basés sur l'horodatage
  • Protocoles basés sur la validation

Protocoles basés sur le verrouillage

Protocoles basés sur le verrouillage dans le SGBD, il existe un mécanisme dans lequel une transaction ne peut pas lire ou écrire les données tant qu'elle n'a pas acquis un verrou approprié. Les protocoles basés sur le verrouillage aident à éliminer le problème de concurrence dans les SGBD pour les transactions simultanées en verrouillant ou en isolant une transaction particulière pour un seul utilisateur.

Un verrou est une variable de données associée à un élément de données. Ce verrou signifie que les opérations qui peuvent être effectuées sur l'élément de données. Les verrous dans le SGBD aident à synchroniser l'accès aux éléments de la base de données par des transactions simultanées.

Toutes les demandes de verrouillage sont adressées au gestionnaire de contrôle de concurrence. Les transactions ne se poursuivent qu'une fois la demande de verrouillage accordée.

Verrous binaires : Un verrou binaire sur un élément de données peut être verrouillé ou déverrouillé.

Partagé/exclusif : Ce type de mécanisme de verrouillage sépare les verrous dans le SGBD en fonction de leurs utilisations. Si un verrou est acquis sur un élément de données pour effectuer une opération d’écriture, on parle de verrou exclusif.

1. Verrou(s) partagé(s) :

Un verrou partagé est également appelé verrou en lecture seule. Avec le verrou partagé, l'élément de données peut être partagé entre les transactions. En effet, vous n'aurez jamais l'autorisation de mettre à jour les données sur l'élément de données.

Par exemple, considérons un cas où deux transactions lisent le solde du compte d'une personne. Le base de données les laissera lire en plaçant un verrou partagé. Cependant, si une autre transaction souhaite mettre à jour le solde de ce compte, le verrouillage partagé l'empêche jusqu'à la fin du processus de lecture.

2. Verrouillage exclusif (X) :

Avec le verrouillage exclusif, un élément de données peut être lu ainsi qu'écrit. Ceci est exclusif et ne peut pas être détenu simultanément sur la même donnée. X-lock est demandé à l’aide de l’instruction lock-x. Les transactions peuvent déverrouiller l'élément de données après avoir terminé l'opération « d'écriture ».

Par exemple, lorsqu'une transaction nécessite de mettre à jour le solde du compte d'une personne. Vous pouvez autoriser cette transaction en plaçant un verrou X dessus. Par conséquent, lorsque la deuxième transaction souhaite lire ou écrire, un verrouillage exclusif empêche cette opération.

3. Protocole de verrouillage simpliste

Ce type de protocoles basés sur le verrouillage permet aux transactions d'obtenir un verrou sur chaque objet avant de commencer l'opération. Les transactions peuvent déverrouiller l'élément de données après avoir terminé l'opération « d'écriture ».

4. Pré-réclamation du verrouillage

Le protocole de verrouillage de pré-réclamation permet d'évaluer les opérations et de créer une liste d'éléments de données requis pour lancer un processus d'exécution. Dans la situation où tous les verrous sont accordés, la transaction s'exécute. Après cela, tous les verrous se libèrent lorsque toutes ses opérations sont terminées.

Famine

La famine est la situation dans laquelle une transaction doit attendre une période indéfinie pour acquérir un verrou.

Voici les raisons de la famine :

  • Lorsque le schéma d'attente pour les éléments verrouillés n'est pas correctement géré
  • En cas de fuite de ressources
  • La même transaction est sélectionnée comme victime à plusieurs reprises

Deadlock

L'impasse fait référence à une situation spécifique dans laquelle deux processus ou plus s'attendent l'un l'autre pour libérer une ressource ou plus de deux processus attendent la ressource dans une chaîne circulaire.

Protocole de verrouillage en deux phases

Protocole de verrouillage en deux phases également connu sous le nom de protocole 2PL, est une méthode de contrôle de concurrence dans le SGBD qui garantit la sérialisabilité en appliquant un verrou aux données de transaction qui bloque l'accès simultané des autres transactions aux mêmes données. Le protocole de verrouillage à deux phases aide à éliminer le problème de concurrence dans le SGBD.

Ce protocole de verrouillage divise la phase d'exécution d'une transaction en trois parties différentes.

  • Dans la première phase, lorsque la transaction commence à s'exécuter, elle nécessite l'autorisation pour les verrous dont elle a besoin.
  • La deuxième partie est celle où la transaction obtient tous les verrous. Lorsqu'une transaction libère son premier verrou, la troisième phase démarre.
  • Dans cette troisième phase, la transaction ne peut exiger aucun nouveau verrou. Au lieu de cela, il libère uniquement les verrous acquis.

Protocole de verrouillage en deux phases

Le protocole Two-Phase Locking permet à chaque transaction de faire une demande de verrouillage ou de déverrouillage en deux étapes :

  • Phase de croissance: Dans cette phase, la transaction peut obtenir des verrous mais ne peut en libérer aucun.
  • Phase de rétrécissement: Dans cette phase, une transaction peut libérer des verrous mais ne pas obtenir de nouveau verrou

Il est vrai que le protocole 2PL offre la sérialisabilité. Toutefois, cela ne garantit pas qu’il n’y aura pas de blocages.

Dans le diagramme ci-dessus, vous pouvez voir que les détecteurs de blocages locaux et globaux recherchent les blocages et les résolvent en reprenant les transactions à leur état initial.

Méthode de verrouillage stricte en deux phases

Le système de verrouillage strict à deux phases est presque similaire au 2PL. La seule différence est que Strict-2PL ne libère jamais de verrou après l'avoir utilisé. Il maintient tous les verrous jusqu'au point de validation et libère tous les verrous d'un seul coup une fois le processus terminé.

2PL centralisé

Dans Centralized 2 PL, un seul site est responsable du processus de gestion des verrous. Il ne dispose que d'un seul gestionnaire de verrous pour l'ensemble du SGBD.

Copie principale 2PL

Mécanisme de copie primaire 2PL, de nombreux gestionnaires de verrous sont distribués sur différents sites. Après cela, un gestionnaire de verrous particulier est responsable de la gestion du verrou pour un ensemble d'éléments de données. Lorsque la copie principale a été mise à jour, la modification est propagée aux esclaves.

2PL distribué

Dans ce type de mécanisme de verrouillage en deux phases, les gestionnaires de verrouillage sont distribués sur tous les sites. Ils sont responsables de la gestion des verrous pour les données sur ce site. Si aucune donnée n’est répliquée, cela équivaut à une copie primaire 2PL. Les coûts de communication du 2PL distribué sont bien plus élevés que ceux de la copie primaire 2PL

Protocoles basés sur l'horodatage

Protocole basé sur l'horodatage dans le SGBD est un algorithme qui utilise l'heure système ou le compteur logique comme horodatage pour sérialiser l'exécution de transactions simultanées. Le protocole basé sur l'horodatage garantit que toutes les opérations de lecture et d'écriture en conflit sont exécutées dans un ordre d'horodatage.

La transaction la plus ancienne est toujours prioritaire dans cette méthode. Il utilise l'heure système pour déterminer l'horodatage de la transaction. Il s’agit du protocole de concurrence le plus couramment utilisé.

Les protocoles basés sur le verrouillage vous aident à gérer l'ordre entre les transactions en conflit lors de leur exécution. Les protocoles basés sur l'horodatage gèrent les conflits dès la création d'une opération.

Mise en situation :

Suppose there are there transactions T1, T2, and T3. 
T1 has entered the system at time 0010 
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.

Avantages:

  • Les plannings sont sérialisables tout comme les protocoles 2PL
  • Pas d'attente pour la transaction, ce qui élimine les risques de blocages !

Désavantages:

La famine est possible si la même transaction est redémarrée et continuellement interrompue

Protocole basé sur la validation

Protocole basé sur la validation dans le SGBD, également connue sous le nom de technique de contrôle de concurrence optimiste, est une méthode permettant d'éviter la concurrence dans les transactions. Dans ce protocole, les copies locales des données de transaction sont mises à jour plutôt que les données elles-mêmes, ce qui entraîne moins d'interférences lors de l'exécution de la transaction.

Le protocole basé sur la validation est exécuté en trois phases :

  1. Phase de lecture
  2. Validation
  3. Phase d'écriture

Phase de lecture

Dans la phase de lecture, les valeurs des données de la base de données peuvent être lues par une transaction, mais l'opération d'écriture ou les mises à jour ne sont appliquées qu'aux copies de données locales, pas à la base de données réelle.

Validation

Lors de la phase de validation, les données sont vérifiées pour garantir qu'il n'y a pas de violation de la sérialisabilité lors de l'application des mises à jour de transaction à la base de données.

Phase d'écriture

Lors de la phase d'écriture, les mises à jour sont appliquées à la base de données si la validation réussit, sinon ; les mises à jour ne sont pas appliquées et la transaction est annulée.

Caractéristiques d’un bon protocole de concurrence

Un mécanisme SGBD de contrôle de concurrence idéal a les objectifs suivants :

  • Doit être résilient aux pannes de site et de communication.
  • Il permet l'exécution parallèle de transactions pour obtenir une concurrence maximale.
  • Ses mécanismes de stockage et ses méthodes de calcul doivent être modestes pour minimiser les frais généraux.
  • Il doit imposer certaines contraintes sur la structure des actions atomiques des transactions.

Résumé

  • Le contrôle de concurrence est la procédure dans SGBD pour gérer des opérations simultanées sans entrer en conflit les unes avec les autres.
  • Les mises à jour perdues, les lectures incorrectes, les lectures non répétables et les problèmes de résumé incorrect sont des problèmes rencontrés en raison du manque de contrôle de concurrence.
  • Basé sur le verrouillage, deux phases, basé sur l'horodatage et basé sur la validation sont des types de protocoles de gestion de concurrence.
  • Le verrou peut être partagé (S) ou exclusif (X)
  • Le protocole de verrouillage biphasé, également connu sous le nom de protocole 2PL, nécessite une transaction qui doit acquérir un verrou après avoir libéré l'un de ses verrous. Il comporte 2 phases de croissance et de rétrécissement.
  • L'algorithme basé sur l'horodatage utilise un horodatage pour sérialiser l'exécution de transactions simultanées. Le protocole utilise le Heure système ou nombre logique comme un horodatage.