Maison  >  Article  >  développement back-end  >  Quelle est la différence entre le verrouillage pessimiste PHP et le verrouillage optimiste ?

Quelle est la différence entre le verrouillage pessimiste PHP et le verrouillage optimiste ?

青灯夜游
青灯夜游original
2019-10-10 16:12:583010parcourir

Quelle est la différence entre le verrouillage pessimiste PHP et le verrouillage optimiste ?

Verrouillage pessimiste

Comme son nom l'indique, il est très pessimiste, à chaque fois que je vais chercher les données Je pense que d'autres le modifieront, donc je le verrouille à chaque fois que j'obtiens les données. Si d'autres souhaitent obtenir les données, ils seront bloqués jusqu'à ce qu'ils obtiennent le verrou.

Les bases de données relationnelles traditionnelles utilisent de nombreux mécanismes de verrouillage, tels que les verrous de ligne, les verrous de table, les verrous en lecture, les verrous en écriture, etc., qui sont tous verrouillés avant les opérations. Cela fait référence à une attitude conservatrice à l'égard des données modifiées par le monde extérieur (y compris d'autres transactions courantes du système et le traitement des transactions provenant de systèmes externes). Par conséquent, les données sont conservées dans un état verrouillé pendant tout le processus de traitement des données.

La mise en œuvre du verrouillage pessimiste repose souvent sur le mécanisme de verrouillage fourni par la base de données (seul le mécanisme de verrouillage fourni par la couche base de données peut véritablement garantir l'exclusivité de l'accès aux données. Sinon, même si le mécanisme de verrouillage est implémenté dans ce système, il ne peut garantir que les données ne seront pas modifiées par des systèmes externes).

Verrouillage optimiste

Comme son nom l'indique, il est très optimiste. Chaque fois que vous allez chercher les données, vous pensez que d'autres le feront. ne le modifiez pas. Par conséquent, il ne sera pas verrouillé, mais lors de la mise à jour, il sera jugé si d'autres ont mis à jour les données pendant cette période. Vous pouvez utiliser des mécanismes tels que les numéros de version.

Le verrouillage optimiste convient aux types d'applications à lectures multiples, ce qui peut améliorer le débit. Si la base de données fournit un mécanisme similaire à write_condition, elle fournit en fait un verrouillage optimiste.

Résumé

Les deux verrous ont leurs propres avantages et inconvénients. L'un ne peut pas être considéré comme meilleur que l'autre. Le verrouillage optimiste convient aux comparaisons d'écriture. Dans de rares cas, c'est-à-dire lorsque les conflits se produisent rarement, cela peut permettre d'économiser le coût des verrous et d'augmenter le débit global du système. Mais si des conflits surviennent souvent, l'application de couche supérieure continuera de réessayer, ce qui réduira les performances. Dans ce cas, le verrouillage pessimiste est donc plus approprié.

Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn