Quels sont les scénarios spécifiques où la concurrence pessimiste est utilisée?Quand utiliser la concurrence pessimiste?
Répondre
Qu'entendez-vous exactement par "quand utiliser le verrouillage par pess"?
Si vous traitez des données gérées par SGBD, vous n'avez aucune option. Le SGBD l'utilise à chaque mise à jour, point final, car le SGBD lui-même n'a pas d'option s'il veut assurer l'intégrité des données.
Même les systèmes basés sur MVCC (? Tels que Oracle) ne possèdent pas d'autre choix que de sérialisation activités à l'aide de verrouillage 2 phases pour traiter correctement les cas tels que:
TX A démarre, TX B commence; TX A insère l'ID 1; TX B insère l'ID 1; TX A vérifie les contraintes; TX B vérifie les contraintes; TX A commet; TX B s'engage.
Si la vérification de contrainte de A/B était autorisée à ignorer l'insertion du même ID effectué par B/A, la base de données finirait par violer la clé. Il est préférable que les verrous contrôlés par l'application ne soient pessimistes que si vous pouvez être sûr qu'ils ne seront pas laissés en attente pendant que l'utilisateur doit taper quelque entrée (ou pendant que toute activité est effectuée qui peut causer retards). Mais c'est une réponse à la question inverse, "quand ne pas l'utiliser".
EDIT
Une indication pour « Quand l'utiliser » pourrait être que dans des situations de haute contention, vous voulez « fail-rapide » pour la transaction selon « arrive en deuxième position ». Cela vous assure que les transactions qui ne peuvent pas être complétées n'accapareront pas trop de ressources, et que ces ressources sont disponibles pour une exécution plus rapide (et donc aussi une libération plus rapide) de la transaction "arrivée en premier". Réalisez, cependant, que vous augmentez vos chances de tomber dans des blocages, et puisque les verrous sont contrôlés par l'application, c'est à vous de résoudre tout blocage.
Oui, quand vous ne pouvez absolument pas avoir deux personnes qui modifient le même enregistrement en même temps. Les banques le font le plus.
La simultanéité pessimiste devrait probablement être utilisée dans les situations où les tentatives d'édition simultanée se produisent fréquemment, et non comme des cas exceptionnels. La simultanéité optimiste peut provoquer des résultats discordants pour les utilisateurs lorsqu'ils sont informés que leurs modifications ne seront pas enregistrées. Il convient donc de l'éviter lorsqu'il s'agit d'une occurrence normale.
- 1. La concurrence dans RIA
- 2. Quand utiliser l'activateur et quand utiliser la méthode d'usine?
- 3. Quand utiliser POJO et Quand utiliser SLSB
- 4. Quand utiliser reinterpret_cast?
- 5. CompositeWPF: EventAggregator - quand utiliser?
- 6. quand utiliser un singleton?
- 7. Détection d'un verrou pessimiste dans VB6
- 8. Concurrence subsonique et optimiste
- 9. Quand utiliser avec (...) {...} en C#?
- 10. Quand utiliser AsyncOperation et AsyncOperationManager
- 11. Quand utiliser Server.Transfer sur PostBackURL?
- 12. Quand utiliser « auto » en Ruby
- 13. Quand utiliser Page.DataBind() et Control.DataBind()?
- 14. Quand utiliser SQLITE_TRANSIENT vs SQLITE_STATIC?
- 15. Quand dois-je utiliser uncaught_exception?
- 16. Pourquoi et quand utiliser LINQ?
- 17. Java EE concurrence et verrouillage
- 18. Condition de concurrence asynchrone JavaScript
- 19. Verrouillage pessimiste dans SQL Server 2008 à l'aide de NHibernate
- 20. Quand utiliser WCF et quand utiliser les services de données ADO dans les sites Web ajax?
- 21. Quand utiliser le mot clé "static" dans la classe C++?
- 22. C# Quand dois-je utiliser List et quand devrais-je utiliser arraylist?
- 23. Comment savoir quand utiliser un analyseur XML et quand utiliser ActiveResource?
- 24. Quand utiliser les vues de la base de données et quand?
- 25. Quand utiliser View Preparer pour les mosaïques
- 26. Objective-C performSelector quand utiliser le côlon?
- 27. PHP/Joomla Quand utiliser des références
- 28. Quand utiliser UserControls dans ASp.Net MVC
- 29. Quand utiliser les événements C# personnalisés
- 30. Quand utiliser MojoExecutionException vs MojoFailureException dans Maven
Le savez-vous à coup sûr? La plupart des autres commentateurs semblent le considérer comme un mythe, car les systèmes des banques sont optimisés pour la vitesse et nécessitent de toute façon une gestion des erreurs et une révocation des transactions. –
Tous leurs systèmes ne fonctionnent pas de cette façon, mais vous remarquerez que certains fonctionnent. Par exemple, lorsqu'une section de vos données personnelles est ouverte sur une machine, elle est complètement désactivée pour l'édition sur une autre machine accédant simultanément à vos données. Je suppose que cela dépend aussi de l'infrastructure des banques et des logiciels. –