Personnalisation du verrouillage pour un index

Dans la plupart des cas, la stratégie de verrouillage dynamique du Moteur de base de données SQL Server Microsoft choisit automatiquement la granularité la plus appropriée pour les requêtes. Lorsque les schémas d'accès sont bien compris et cohérents, la limitation des niveaux de verrouillage disponibles pour un index peut être souhaitable.

Exemple : une application de base de données utilise une table de recherche actualisée chaque semaine par un processus automatique. La stratégie de verrouillage la plus efficace consiste à désactiver le verrouillage de page et de ligne et à autoriser tous les lecteurs concurrents à obtenir un verrou partagé (P) sur la table, ce qui réduit la charge. Durant la mise à jour hebdomadaire automatique, le processus de mise à jour peut acquérir un verrou exclusif (X) et mettre à jour l'ensemble de la table.

La granularité de verrouillage utilisée pour un index peut être configurée au moyen des instructions CREATE INDEX et ALTER INDEX. De plus, les instructions CREATE TABLE and ALTER TABLE peuvent être utilisées pour définir la granularité de verrouillage sur les contraintes PRIMARY KEY et UNIQUE. À des fins de compatibilité descendante, la procédure stockée système sp_indexoption peut également définir la granularité. Pour afficher l'option de verrouillage en cours pour un index donné, utilisez la fonction INDEXPROPERTY. Les verrous au niveau des pages, des lignes, ou une combinaison de ces derniers peuvent être refusés pour un index donné.

Verrous refusés Accès à l'index par

Niveau page

Verrous au niveau des lignes et des tables

Niveau ligne

Verrous au niveau des pages et des tables

Niveau page et niveau ligne

Verrous au niveau des tables

Par exemple, si une table est sensible au verrouillage, il peut être utile de refuser les verrous de niveau page et de n'autoriser ainsi que les verrous de niveau ligne. Ou, si des recherches dans les tables sont toujours utilisées pour accéder à un index ou une table, le refus d'attribution de verrous de niveau ligne et page peut être utile car il n'autorise que l'attribution de verrous de niveau table.

ms189076.note(fr-fr,SQL.90).gifImportant :
L'optimiseur de requête du Moteur de base de données choisit presque toujours la bonne granularité de verrouillage. Il est recommandé de ne pas forcer les choix effectués par l'optimiseur. Le refus d'attribution d'un niveau de verrouillage peut affecter défavorablement la concurrence d'accès à une table ou un index. Par exemple, la spécification de verrous de niveau table uniquement sur une table importante consultée par de nombreux utilisateurs peut ralentir les performances de manière significative. Les utilisateurs doivent en effet attendre que le verrou de niveau table soit levé avant de pouvoir accéder à la table.

Voir aussi

Autres ressources

ALTER INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
INDEXPROPERTY (Transact-SQL)
sp_indexoption (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005