|  
    
Il n'existe aucune fonctionnalité explicitement appelée « verrouillage des tabulations » dans SQL Server. Les mécanismes de verrouillage de SQL Server sont plus nuancés qu'un simple « verrou de tabulation ». Ce à quoi vous pensez peut-être, ou ce que quelqu'un pourrait familièrement appeler un « verrouillage de tabulation », fait probablement référence à l'un de ces scénarios :
  
 * Verrouillage au niveau de la table : Il s'agit de ce que SQL Server se rapproche le plus d'un « verrouillage de tabulation ». Dans certaines situations, SQL Server peut acquérir un verrou partagé (S) ou exclusif (X) au niveau de la table. Cela signifie que la table entière est verrouillée, empêchant toute autre opération simultanée de modifier ou même de lire (selon le type de verrou) la table jusqu'à ce que le verrou soit libéré. Cela se produit souvent avec des requêtes mal conçues ou soumises à de forts conflits. Ce n'est pas un paramètre délibéré que vous choisissez ; c'est une conséquence du plan d'accès de la requête et du niveau d'isolement choisi.  
  
 * Incompréhension du verrouillage au niveau des lignes : SQL Server utilise principalement le verrouillage au niveau des lignes. Cela signifie que seules les lignes spécifiques en cours de modification sont verrouillées, permettant à d'autres utilisateurs d'accéder et de modifier simultanément d'autres lignes de la même table. Toutefois, si de nombreuses lignes sont mises à jour simultanément, le système peut toujours subir une dégradation des performances même s'il ne s'agit pas d'un « verrouillage de tabulation » complet.  
  
 * Verrous de modification de schéma : Lorsque vous modifiez la structure d'une table (ajout, modification ou suppression de colonnes, ajout d'index, etc.), SQL Server place des verrous pour empêcher toute modification simultanée du schéma de la table. Celles-ci sont appliquées implicitement et sont généralement de courte durée.  
  
 Pourquoi vous voyez rarement de véritables « verrous de tabulation » dans un environnement SQL Server moderne :  
  
 * Implications sur les performances : Les verrous au niveau des tables restreignent considérablement la simultanéité et peuvent entraîner d'importants goulots d'étranglement en termes de performances. Ils sont hautement indésirables dans la plupart des scénarios.  
 * Optimisation du verrouillage au niveau des lignes : L'optimiseur de requêtes de SQL Server s'efforce d'utiliser le verrouillage au niveau des lignes autant que possible pour maximiser la concurrence.  
 * Niveaux d'isolement : Le niveau d'isolement choisi (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) influence la manière dont les verrous sont acquis et maintenus, affectant ainsi la probabilité de verrouillage au niveau de la table.  
  
 En résumé : Bien que le terme « verrouillage de tabulation » ne soit pas techniquement précis pour SQL Server, il est utilisé de manière informelle pour décrire des situations dans lesquelles la table entière est verrouillée en raison de l'exécution d'une requête ou de modifications de schéma. Il s’agit généralement du symptôme d’un problème plutôt que d’une fonctionnalité intentionnelle. Si vous rencontrez des problèmes de performances qui ressemblent à un « verrou de tabulation », étudiez vos requêtes, votre indexation et vos niveaux d'isolement pour comprendre et optimiser le modèle de concurrence de votre base de données. L'analyse des attentes de verrouillage à l'aide d'outils tels que « sp_whoisactive » ou SQL Server Profiler aidera à diagnostiquer la cause première.
 
 |