Accès concurrentiels
Une concurrence est la possibilité pour plusieurs utilisateurs d'avoir accès aux données en même temps. Lorsque le nombre d'opérations simultanées que le moteur de base de données peut prendre en charge est important, le taux de concurrences augmente. Dans Microsoft SQL Server Compact 3.5, le contrôle des concurrences est obtenu grâce à l'utilisation de verrous permettant de protéger les données. Les verrous déterminent la façon dont plusieurs utilisateurs peuvent modifier et avoir accès aux données partagées simultanément sans entrer en conflit les uns avec les autres. Pour plus d'informations, consultez Verrouillage (SQL Server Compact).
Problèmes liés aux accès concurrentiels
Si vous ne gérez pas la modification et la lecture des données par plusieurs utilisateurs, des problèmes d'accès concurrentiels peuvent se produire. Par exemple, si plusieurs utilisateurs ont accès simultanément à une base de données, leurs transactions peuvent tenter d'effectuer des opérations simultanément sur les même données. Parmi les problèmes d'accès concurrentiels qui peuvent se produire lors de l'utilisation de SQL Server Compact 3.5, citons notamment :
Mises à jour perdues
Des mises à jour sont perdues lorsque deux transactions au minimum sélectionnent la même ligne, puis la mettent à jour en fonction de la valeur sélectionnée à l'origine. La dernière mise à jour remplace celles effectuées par les autres transactions, ce qui entraîne une perte de données.
Analyses incohérentes (lectures non renouvelées)
Des lectures non renouvelées se produisent lorsqu'une seconde transaction a accès à la même ligne plusieurs fois et lit des données différentes à chaque fois. Cela implique plusieurs lectures de la même ligne. Chaque fois, les informations sont modifiées par une autre transaction.
Lectures fantômes
Des lectures fantômes se produisent lorsqu'une action d'insertion ou de suppression est réalisée sur une ligne qui appartient à une plage de lignes lues par une transaction. La première lecture de la plage de lignes de la transaction présente une ligne qui n'existe plus dans la lecture suivante en raison d'une suppression par une autre transaction. De même, en raison d'une insertion par une autre transaction, la lecture suivante de la transaction présente une ligne qui n'existait pas dans la lecture d'origine.
Notes
Un problème d'accès concurrentiel très courant que SQL Server Compact 3.5 ne rencontre pas est la dépendance non validée (lecture erronée). Ce problème se produit lorsqu'une seconde transaction sélectionne une ligne mise à jour par une autre transaction. La seconde transaction lit des données qui n'ont pas encore été validées et qui risquent d'être modifiées par la transaction qui met à jour la ligne. Des lectures erronées peuvent se produire lors de l'utilisation de MicrosoftSQL Server. Pour plus d'informations sur les problèmes de concurrences, consultez « Effets des concurrences » dans la documentation en ligne de SQL Server.
Contrôle des accès concurrentiels
Dans un scénario de base de données, il existe deux types de mécanismes de contrôle des accès concurrentiels :
Contrôle de l'accès concurrentiel optimiste
Le contrôle de l'accès concurrentiel optimiste suppose que l'existence de conflits de ressources entre plusieurs utilisateurs est improbable et il autorise donc l'exécution des transactions sans verrouiller aucune ressource. Les ressources sont vérifiées uniquement lorsque des transactions tentent de modifier des données. Cette vérification permet de déterminer si un conflit s'est produit (en vérifiant le numéro de version, par exemple). Si un conflit se produit, l'application doit lire les données et retenter la modification. Le contrôle de l'accès concurrentiel optimiste n'est pas fourni avec le produit, mais vous pouvez l'intégrer manuellement à votre application en effectuant un suivi de l'accès aux bases de données.
Contrôle de l'accès concurrentiel pessimiste
Le contrôle de l'accès concurrentiel pessimiste verrouille les ressources, si nécessaire, pour toute la durée d'une transaction. SQL Server Compact 3.5 prend en charge le contrôle de l'accès concurrentiel pessimiste qui verrouille les ressources, si nécessaire, pour toute la durée d'une transaction.
Pour plus d'informations sur les accès concurrentiels optimiste et pessimiste, consultez « Types de contrôle des accès concurrentiels » dans la documentation en ligne de SQL Server.
Notes
Certains scénarios de plateformes 64 bits ne prennent pas en charge l'accès simultané à un fichier de base de données avec des versions antérieures de SQL Server Compact. Pour plus d'informations sur les composants 64 bits, consultez Gestion d'applications de base de données 64 bits.
Voir aussi
Autres ressources
Transactions (SQL Server Compact)