Supposons qu'une transaction d'un programme mette à jour les données d'une géodatabase d'entreprise, mais qu'avant la validation de cette transaction, un autre programme lise les mêmes données. Le second programme lit-t-il les nouvelles données non validées ou les anciennes données ? La réponse dépend du niveau d'isolement de la transaction.
Si la transaction autorise les autres programmes à lire les données non validées, le second programme lit les données mises à jour. Cela peut améliorer les performances car le second programme n'a pas à attendre la fin de la transaction pour lire les données. Il existe cependant un compromis : si le second programme lit des données qui ne sont pas validées par la suite, il aura lu des données incorrectes ou inexistantes.
Pour permettre aux utilisateurs de choisir ce qui convient le mieux à leur application, les SGBD proposent des niveaux d'isolement qui définissent le mode d'isolement des processus suivants des autres processus exécutés simultanément. Les niveaux d'isolement peuvent être définis par l'administrateur de base de données et s'appliquent à toutes les transactions de la base de données. Ils peuvent également être définis dans une application ou avant une transaction individuelle. Un niveau d'isolement spécifie :
- Le degré de disponibilité des lignes lues et mises à jour par l’application envers les autres processus exécutés en parallèle.
- Le degré de disponibilité des mises à jour des autres processus d’application exécutés en parallèle pour l’application.
Les SGBD vous permettent de définir l'un des quatre niveaux d'isolement, répertoriés ci-après du plus faible au plus élevé. Chaque niveau ajoute des fonctionnalités à celles du niveau précédent. Les niveaux d'isolement supérieurs offrent un degré plus élevé d'intégrité des données, mais au détriment d'un accès simultané réduit car ils conservent les verrous plus longtemps.
UNCOMMITTED READ : autorise un isolement minimum des transactions simultanées. La transaction peut lire les données modifiées par les transactions simultanées avant même leur validation.
COMMITTED READ : la transaction ne lit que les données validées ; elle ne lit pas les données non validées.
REPEATABLE READ : place une restriction supplémentaire applicable lorsque les mêmes lignes sont lues plusieurs fois au cours de la transaction. Ainsi, si les mêmes lignes sont lues une nouvelle fois, elles sont identiques.
SERIALIZABLE : ce niveau d'isolement offre le degré d'isolement des transactions simultanées le plus élevé. Toutes les lectures dans la transaction voient uniquement les données validées avant le début de la transaction et ne voient jamais les modifications des transactions simultanées au cours de la transaction.
Votre SGBD peut y faire référence sous d'autres noms. Chaque niveau fonctionne de la même manière d'un SGBD à un autre, mais il existe quelques différences importantes. Pour éviter les erreurs lorsque vous concevez des applications et des processus, veillez à bien comprendre l'impact des niveaux d'isolement sur le verrouillage et l'accès simultané dans votre SGBD. Pour plus d'informations, reportez-vous à la documentation de votre SGBD.
Pour plus d'informations sur l'application des niveaux d'isolement dans ArcGIS et sur les éventuels problèmes d'accès simultané, reportez-vous à la rubrique Accès simultané et verrouillage.