Verrouillage optimiste est une stratégie qui consiste à lire un enregistrement, à prendre note d'un numéro de version (d'autres méthodes pour ce faire font appel à des dates, des horodatages ou des checksums/hashes) et à vérifier que la version n'a pas changé avant de réécrire l'enregistrement. Lorsque vous réécrivez l'enregistrement, vous filtrez la mise à jour sur la version pour vous assurer qu'elle est atomique. (c'est-à-dire qu'elle n'a pas été mise à jour entre le moment où vous vérifiez la version et celui où vous écrivez l'enregistrement sur le disque) et mettez à jour la version en une seule fois.
Si l'enregistrement est sale (c'est-à-dire une version différente de la vôtre), vous interrompez la transaction et l'utilisateur peut la relancer.
Cette stratégie s'applique surtout aux systèmes à haut volume et aux architectures à trois niveaux où vous ne maintenez pas nécessairement une connexion à la base de données pour votre session. Dans cette situation, le client ne peut pas réellement maintenir les verrous de la base de données, car les connexions sont prises dans un pool et il se peut que vous n'utilisiez pas la même connexion d'un accès à l'autre.
Verrouillage pessimiste consiste à verrouiller l'enregistrement pour votre usage exclusif jusqu'à ce que vous ayez fini de l'utiliser. L'intégrité est bien meilleure que celle du verrouillage optimiste, mais vous devez faire attention à la conception de votre application pour éviter Impasses . Pour utiliser le verrouillage pessimiste, vous avez besoin soit d'une connexion directe à la base de données (comme c'est généralement le cas dans une application de type client serveur à deux niveaux ) ou un ID de transaction disponible en externe qui peut être utilisé indépendamment de la connexion.
Dans ce dernier cas, vous ouvrez la transaction avec le TxID et vous vous reconnectez ensuite en utilisant cet ID. Le SGBD maintient les verrous et vous permet de reprendre la session par l'intermédiaire du TxID. C'est ainsi que les transactions distribuées utilisant des protocoles de validation en deux phases (tels que XA ou Transactions COM+ ) travaillent.
3 votes
blog.couchbase.com/
3 votes
C'est une bonne question, notamment parce que dans sérialisation Je lis
At any technique type conflicts should be detected and considered, with similar overhead for both materialized and non-materialized conflicts
.4 votes
Vous trouverez une bonne explication, ici sur SO, sur ce qu'est la Concept de base du verrouillage optimiste .
2 votes
Je vous recommande de lire l'excellent livre de Martin Fowler sur les modèles : martinfowler.com/books/eaa.html
0 votes
Je pense que le contrôle de la concurrence est plus précis que le verrouillage.