Niveaux d'isolement
Supposons qu'une transaction dans un programme actualise des données dans une géodatabase ArcSDE, mais qu'avant la validation de la transaction, un autre programme lit ces mêmes données. Le second programme va-t-il lire 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 d'autres programmes à lire des données non validées, le second programme lit les données actualisées. Cela peut améliorer les performances car le second programme n'a pas besoin d'attendre la fin de la transaction pour lire les données. Mais cette méthode présente un inconvénient : si le second programme lit des données non validées définitivement, ces données risquent d'êtres incorrectes ou inexistantes.
Pour permettre aux utilisateurs de choisir la solution la mieux adaptée à leur application, les SGBD proposent des niveaux d'isolement qui précisent comment les processus sous-jacents doivent être isolés des autres processus exécutés simultanément. Les niveaux d'isolement peuvent être définis par l'administrateur de la base de données et s'appliquer à 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 les éléments suivants :
- Le degré auquel les lignes lues et actualisées par l'application sont disponibles pour les autres processus exécutés simultanément.
- Le degré auquel les mises à jour d'autres processus d'application exécutés simultanément sont disponibles pour l'application.
Les SGBD vous permettent de définir l'un des quatre niveaux d'isolement répertoriés ci-dessous, du plus faible au plus élevé. Chaque niveau s'ajoute aux entités du niveau précédent. Les niveaux d'isolement supérieurs offrent un meilleur degré d'intégrité des données, mais au détriment de l'accessibilité simultanée, étant donné qu'ils appliquent des verrouillages plus longs.
LECTURE NON VALIDEE : permet un isolement minimal des transactions simultanées. La transaction peut lire des données qui ont été modifiées par des transactions simultanées même avant leur validation.
LECTURE VALIDEE : la transaction lit uniquement des données validées ; elle ne lit aucune donnée non validée.
LECTURE RENOUVELEE : ajoute une restriction supplémentaire qui s'applique lorsque les mêmes lignes sont lues plusieurs fois au cours de la transaction. Cette méthode vérifie que les données lues ultérieurement sont identiques.
SERIALISABLE : ce niveau d'isolement offre le degré d'isolement des transactions simultanées le plus élevé. Toutes les lectures de la transaction visualisent uniquement les données validées avant le début de la transaction, jamais les modifications simultanées validées pendant l'exécution de la transaction.
Vos SGBD peuvent utiliser d'autres noms pour désigner ces options. Chaque niveau est appliqué de la même façon dans les SGBD, mais avec certaines différences importantes. Pour éviter de commettre des erreurs lors de la conception de l'application et du workflow, il est important de bien mesurer l'impact des niveaux d'isolement sur le verrouillage et l'accessibilité simultanée de votre SGBD. Pour plus d'informations, consultez la documentation de votre SGBD.
Pour en savoir plus sur l'application des niveaux d'isolement dans ArcGIS et les risques de problèmes d'accessibilité simultanée, reportez-vous à la rubrique Accès simultané et verrouillage.