Partager via


Promotion de verrou

La promotion de verrou est le processus de conversion de plusieurs verrous de grain fin, tels qu'une ligne, en quelques verrous de grain plus gros, tels qu'une table. L'utilisation de la promotion de verrou réduit les temps système.

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) promeut automatiquement les verrous de ligne et de page en verrous de table lorsqu'une transaction dépasse son seuil de promotion. Dans SQL Server Compact Edition, la promotion de verrou peut se produire d'une ligne vers une table ou d'une page vers une table, mais pas d'une ligne vers une page. Lorsque la promotion se produit au niveau d'une table, aucune demande ne peut être effectuée pour un verrou inférieur à une table.

Par exemple, lorsqu'une transaction opère sur les lignes d'une table, SQL Server Compact Edition acquiert automatiquement les verrous sur ces lignes et place des verrous intentionnels de niveau supérieur sur les pages et la table qui contiennent ces lignes. Toute page d'index appropriée est également verrouillée. Lorsque le nombre de verrous gérés par la transaction dépasse son seuil, SQL Server Compact Edition tente de remplacer le verrou intentionnel sur la table par un verrou plus fort. Par exemple, un verrou intentionnel d'accès exclusif (IX) est remplacé par un verrou exclusif (X). Après avoir acquis le verrou plus fort, tous les verrous de niveaux page et ligne gérés par la transaction dans la table sont libérés.

La promotion de verrou se produit par table, lorsqu'une demande de verrou entraîne le dépassement d'un seuil de promotion de verrou spécifique. Tous les verrous de niveau sous-table, quel que soit leur type, sont pris en compte dans ce seuil. Le seuil de promotion doit être uniquement considéré comme une valeur approximative, car tout verrou requis par des opérations internes est comptabilisé dans ce seuil. La promotion risque de se produire plus tôt que prévu.

Si la promotion est impossible en raison d'un conflit de verrous, la transaction continue mais elle tentera peut-être une nouvelle promotion ultérieurement.

Remarque :
Les verrous intentionnels, les verrous de ligne et les verrous de page sont tous pris en compte dans la comptabilisation donnant lieu à la promotion, excepté si ce sont des verrous de table temporaires. Lorsque le nombre total de verrous intentionnels, de verrous de ligne et de verrous de page sur une table spécifique dépasse le seuil de promotion, cette dernière se produit.

Vous pouvez contrôler la promotion de verrou par session en définissant le seuil de promotion de verrou, comme illustré dans l'exemple de code suivant :

SET LOCK_ESCALATION 1000;

Ce paramètre affecte toutes les tables de la base de données. Sa valeur par défaut est 100.

Voir aussi

Concepts

Présentation du verrouillage
Affichage des informations de verrouillage
Personnalisation du verrouillage

Aide et information

Assistance sur SQL Server Compact Edition