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

Dans la programmation de gestion de données, le contrôle de simultanéité est un mécanisme conçu pour garantir que des résultats précis sont générés par des opérations simultanées. Ces résultats doivent également être obtenus rapidement. Le contrôle de la concurrence est très souvent observé dans les bases de données contenant un cache d'informations consultables que les utilisateurs peuvent obtenir.

Les programmeurs essaient de concevoir une base de données de manière à ce que l'effet des transactions importantes sur les données partagées soit équivalent. Cela signifie que les données qui entrent en contact avec des ensembles de transactions se trouveraient dans un certain état où les résultats pourraient être obtenus si toutes les transactions s'exécutaient en série et dans un ordre particulier. Parfois, ces données ne sont pas valables car elles sont modifiées simultanément par deux transactions.

Il existe de nombreuses façons de s'assurer que les transactions s'exécutent les unes après les autres, y compris par le biais de l'exclusion mutuelle, ainsi que de créer une ressource qui décide quelles transactions ont accès. Cependant, ceci est excessif et ne permettra pas à un programmeur de bénéficier du contrôle de simultanéité dans un système distribué. Le contrôle de la simultanéité permet l'exécution simultanée de plusieurs transactions tout en les éloignant les unes des autres, ce qui garantit la linéarisation. Un moyen d'implémenter le contrôle de simultanéité consiste à utiliser un verrou exclusif sur une ressource particulière pour les exécutions de transactions en série qui partagent des ressources. Les transactions verrouillent un objet destiné à être utilisé, et si une autre transaction demande à l'objet verrouillé, cette transaction doit attendre que l'objet soit déverrouillé.

L'implémentation de cette méthode dans les systèmes distribués implique des gestionnaires de verrous, des serveurs qui émettent des verrous de ressources. Ceci est très similaire aux serveurs pour les exclusions mutuelles centralisées, où les clients peuvent demander des verrous et envoyer des messages pour la libération des verrous sur une ressource particulière. La préservation de l'exécution en série reste toutefois nécessaire pour le contrôle de la simultanéité. Si deux transactions distinctes accèdent à un ensemble d'objets similaire, les résultats doivent être similaires et comme si ces transactions étaient exécutées dans un ordre particulier. Pour assurer l'ordre d'accès à une ressource, un verrouillage en deux phases est introduit, ce qui signifie que les transactions ne sont pas autorisées à créer de nouveaux verrous lors de la libération d'un verrou séparé.

Dans le verrouillage en deux phases pour le contrôle de la concurrence, sa phase initiale est considérée comme la phase de croissance, où la transaction acquiert le verrou nécessaire. La phase suivante est considérée comme une phase de contraction, au cours de laquelle les verrous sont libérés. Il y a des problèmes avec ce type de verrouillage. Si les transactions échouent, d'autres transactions pourraient utiliser les données d'objets modifiés et déverrouillés par des transactions abandonnées. Cela entraînerait l'annulation d'autres transactions.

DANS D'AUTRES LANGUES

Cet article vous a‑t‑il été utile ? Merci pour les commentaires Merci pour les commentaires

Comment pouvons nous aider? Comment pouvons nous aider?