Verrouillage (SQL Server Compact)
Lorsque plusieurs utilisateurs ou applications accèdent simultanément aux mêmes données, le verrouillage les empêche de modifier les données en même temps. Les verrous sont gérés en interne par le moteur de base de données Microsoft SQL Server Compact Moteur de base de données. Les verrous sont automatiquement acquis et libérés sur la base des actions prises par l'utilisateur.
Si le verrouillage n'est pas utilisé et que plusieurs utilisateurs mettent à jour les mêmes données en même temps, les données de la base de données peuvent présenter des incohérences logiques. Dans ce cas, les requêtes exécutées sur ces données peuvent produire des résultats inattendus.
Une application ne peut jamais effectuer de requête directe de verrou. Au contraire, lorsqu'une transaction débute et que des commandes sont effectuées dans un langage de requête (langage de manipulation de données (DML) ou langage de définition de données (DDL)) dans la transaction, SQL Server Compact verrouille toutes les ressources requises afin de protéger les ressources au niveau d'isolement souhaité.
SQL Server Compact détermine automatiquement lorsque des verrous doivent être accordés et libérés pour toutes les ressources. Par défaut, le verrouillage au niveau des lignes est utilisé pour les pages de données, et le verrouillage au niveau des pages pour les pages d'index. Pour préserver les ressources système, le gestionnaire de verrous augmente automatiquement les verrous en cas de dépassement du seuil configurable du nombre de verrous de lignes. Le nombre maximal de verrous pouvant être affectés par session dans le gestionnaire de verrous est de 26 2143.
Vous pouvez choisir de modifier la granularité de verrouillage pour certaines opérations. Soyez prudent car toute modification de la granularité de verrouillage peut avoir des effets indésirables sur la simultanéité.
SQL Server Compact peut verrouiller les ressources suivantes :
Lignes
Pages d'index ou données à concurrence de 4 Ko
Table de schémas
Tables
Bases de données
Le verrouillage à une granularité plus faible, par exemple au niveau de la ligne, augmente la simultanéité mais exige davantage de traitement vu qu'un plus grand nombre de verrous doit être géré si de nombreuses lignes sont verrouillées. Le verrouillage à une granularité plus large, par exemple au niveau de la table, réduit la simultanéité étant donné que le verrouillage d'une table entière interdit aux autres transactions l'accès à toute partie de la table. Toutefois, le verrouillage à ce niveau exige moins de traitement vu qu'il y a moins de verrous à gérer.
Contenu de cette section
Rubrique |
Description |
---|---|
Explique les principes de base du verrouillage dans SQL Server Compact. |
|
Décrit les informations renvoyées par la vue sys.lock_information. |
|
Décrit les façons de personnaliser le verrouillage. |