Contrôle d'accès concurrentiel du SGBD: horodatage & Protocoles basés sur les verrous

Table des matières:

Anonim

Qu'est-ce que le contrôle d'accès concurrentiel?

Le contrôle de la concurrence dans le système de gestion de base de données est une procédure de gestion des 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 facile si tous les utilisateurs ne font que lire des données. Il n'y a aucun moyen qu'ils puissent interférer les uns avec les autres. Bien que pour toute base de données pratique, elle aurait un mélange d'opérations de lecture et d'écriture et, par conséquent, la concurrence est un défi.

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

Dans ce tutoriel, vous apprendrez

  • Qu'est-ce que le contrôle d'accès concurrentiel?
  • Problèmes potentiels de concurrence
  • Pourquoi utiliser la méthode de concurrence?
  • Protocoles de contrôle de la concurrence
  • Protocoles basés sur les verrous
  • Protocole de verrouillage biphasé (2PL)
  • Protocoles basés sur l'horodatage
  • Protocole basé sur la validation
  • Caractéristiques d'un bon protocole de concurrence

Problèmes potentiels de concurrence

Voici quelques problèmes auxquels vous serez probablement confronté lors de l'utilisation de la méthode de contrôle de la concurrence du SGBD:

  • Les mises à jour perdues se produisent 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 ( lecture incorrecte )
  • La 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.
  • Un problème de résumé incorrect se produit lorsqu'une transaction prend le résumé de la valeur de toutes les instances d'un élément de données répété et que la seconde transaction met à jour quelques instances de cet élément de données spécifique. Dans cette situation, le résumé qui en résulte ne reflète pas un résultat correct.

Pourquoi utiliser la méthode de concurrence?

Les raisons d'utiliser la méthode de contrôle d'accès concurrentiel sont le SGBD:

  • Pour appliquer l'isolement par exclusion mutuelle entre des transactions en conflit
  • Pour résoudre les problèmes de conflit de lecture-écriture et d'écriture-écriture
  • Pour préserver la cohérence de la base de données en préservant constamment les obstacles à 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 simultané.
  • Le contrôle de la concurrence contribue à garantir la sérialisation

Exemple

Supposons que deux personnes se rendent aux bornes é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'un seul siège pour le film dans ce théâtre en particulier. Sans contrôle d'accès concurrentiel dans le SGBD, il est possible que les deux cinéphiles finissent par acheter un billet. Cependant, la méthode de contrôle d'accès concurrentiel ne permet pas que cela se produise. Les deux cinéphiles peuvent toujours accéder aux informations écrites dans la base de données des sièges de cinéma. Mais le contrôle d'accès concurrentiel ne fournit un ticket qu'à l'acheteur qui a terminé le processus de transaction en premier.

Protocoles de contrôle de la concurrence

Différents protocoles de contrôle de concurrence offrent des avantages différents entre la quantité de concurrence qu'ils autorisent et la quantité de frais généraux qu'ils imposent. Voici les techniques de contrôle d'accès concurrentiel dans le SGBD:

  • Protocoles basés sur les verrous
  • Protocole de verrouillage biphasé
  • Protocoles basés sur l'horodatage
  • Protocoles basés sur la validation

Protocoles basés sur les verrous

Les protocoles basés sur le verrouillage dans le SGBD sont un mécanisme dans lequel une transaction ne peut pas lire ou écrire les données jusqu'à ce qu'elle acquière un verrou approprié. Les protocoles basés sur le verrouillage aident à éliminer le problème de concurrence dans le 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 permettent de 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 d'accès concurrentiel. 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, il est appelé verrou exclusif.

1. Serrure partagée (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. La 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. Verrou exclusif (X):

Avec le verrouillage exclusif, une donnée peut être aussi bien lue qu'écrite. Ceci est exclusif et ne peut pas être conservé simultanément sur le même élément de données. 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 doit 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 pré-réclamation de verrouillage permet d'évaluer les opérations et de créer une liste des éléments de données requis qui sont nécessaires 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 sont libérés lorsque toutes ses opérations sont terminées.

famine

La famine est la situation où 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 à plusieurs reprises comme victime

Impasse

Le blocage fait référence à une situation spécifique dans laquelle deux processus ou plus 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 biphasé

Le protocole de verrouillage à deux phases, également connu sous le nom de protocole 2PL, est une méthode de contrôle de la concurrence dans le SGBD qui garantit la sérialisation en appliquant un verrou aux données de transaction qui bloque d'autres transactions pour accéder aux mêmes données simultanément. Le protocole de verrouillage à deux phases permet d'é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 requiert une autorisation pour les verrous dont elle a besoin.
  • La deuxième partie est l'endroit 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 de nouveaux verrous. Au lieu de cela, il libère uniquement les verrous acquis.

Le protocole de verrouillage en deux phases permet à chaque transaction d'effectuer 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 libérer aucun verrou.
  • 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 une sérialisabilité. Cependant, cela ne garantit pas que les blocages ne se produisent pas.

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

Méthode de verrouillage biphasée stricte

Le système de verrouillage Strict-Two phase est presque similaire au 2PL. La seule différence est que Strict-2PL ne libère jamais un verrou après l'avoir utilisé. Il détient tous les verrous jusqu'au point de validation et libère tous les verrous en une fois lorsque le processus est terminé.

2PL centralisé

Dans Centralized 2 PL, un seul site est responsable du processus de gestion des écluses. Il n'a qu'un seul gestionnaire de verrouillage pour l'ensemble du SGBD.

Copie primaire 2PL

Mécanisme de copie primaire 2PL, de nombreux gestionnaires de verrous sont répartis 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.

Distribué 2PL

Dans ce type de mécanisme de verrouillage biphasé, les gestionnaires de verrouillage sont répartis sur tous les sites. Ils sont responsables de la gestion des verrous des données sur ce site. Si aucune donnée n'est répliquée, elle équivaut à la copie principale 2PL. Les coûts de communication du 2PL distribué sont bien plus élevés que celui de la copie primaire 2PL

Protocoles basés sur l'horodatage

Le 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 des 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.

L'ancienne transaction a toujours la priorité dans cette méthode. Il utilise l'heure système pour déterminer l'horodatage de la transaction. Il s'agit du protocole d'accès concurrentiel 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 qu'une opération est créée.

Exemple:

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

Avantages :

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

Désavantages:

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

Protocole basé sur la validation

Le protocole basé sur la validation dans le SGBD, également connu sous le nom de technique de contrôle optimiste de la concurrence, 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é dans les trois phases suivantes:

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

Phase de lecture

Dans la phase de lecture, les valeurs de 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.

Phase de validation

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

Phase d'écriture

Dans 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 de SGBD de contrôle d'accès concurrentiel 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 atteindre 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 le SGBD pour gérer des opérations simultanées sans entrer en conflit les unes avec les autres.
  • Les mises à jour perdues, la lecture incorrecte, la lecture non répétable et le problème de résumé incorrect sont des problèmes rencontrés en raison du manque de contrôle de la concurrence.
  • Basés sur les verrous, deux phases, basés sur l'horodatage, basés sur la validation sont des types de protocoles de gestion de la concurrence
  • Le verrou peut être partagé (S) ou exclusif (X)
  • Le protocole de verrouillage à deux phases, également connu sous le nom de transaction nécessitant un protocole 2PL, doit acquérir un verrou après avoir libéré l'un de ses verrous. Il a 2 phases de croissance et de rétrécissement.
  • L'algorithme basé sur l'horodatage utilise un horodatage pour sérialiser l'exécution des transactions simultanées. Le protocole utilise l' heure système ou le décompte logique comme horodatage.