CORRECTIF : Les problèmes de performances se produisent lorsque l'activité des verrous de base de données augmente dans SQL Server

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 2926217
Avertissement
Par défaut, Service Pack 1 pour SQL Server 2014 et Service Pack 3 de SQL Server 2012 inclut ce correctif et vous n'avez pas à ajouter tous les indicateurs de trace pour activer le correctif. Pour activer le correctif après l'installation d'une des mises à jour cumulatives de la section Résolution, vous devez démarrer Microsoft SQL Server en ajoutant l'indicateur de trace 1236 aux paramètres de démarrage.
Symptômes
Supposons que vous exécutez une instance de Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 ou SQL Server 2008 R2 sur un ordinateur qui contient le nombre de processeurs. Lorsque le nombre de verrous (type de ressource = base de données) pour une base de données spécifique dépasse un certain seuil, vous rencontrez les problèmes de performances suivants :
  • Des valeurs élevées se produisent pour nombre de verrouillage spinlock LOCK_HASH .

    Remarque Consultez la section « Informations complémentaires » pour plus d'informations sur la façon de surveiller ce verrouillage spinlock.
  • Des requêtes ou des opérations qui nécessitent des verrous de base de données prennent beaucoup de temps à se terminer. Par exemple, vous pouvez remarquer les retards de performance suivants :
    • Connexions SQL Server
    • Requêtes de serveur lié
    • sp_reset_connection
    • Transactions
Remarque : Pour rechercher la liste de verrous (type de ressource = base de données) sur une base de données particulière, consultez la section « Informations complémentaires ». La valeur de seuil varie par environnement.
Résolution

Informations de mise à jour cumulative

Le problème a été tout d'abord résolu dans la mise à jour cumulative suivante de SQL Server.

Mise à jour cumulative 13 pour SQL Server 2008 R2 SP2

Mise à jour cumulative 17 pour SQL Server 2008 SP3

Mise à jour cumulative 1 pour SQL Server 2014

Mise à jour cumulative 9 pour SQL Server 2012 SP1

À propos des mises à jour cumulatives pour SQL Server

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et des correctifs de sécurité qui ont été inclus dans la précédente mise à jour cumulative. Découvrez les dernières mises à jour cumulatives pour SQL Server :

Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant ce problème spécifique.

Si le correctif est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n'apparaît pas, soumettre une demande au Service clientèle de Microsoft et prise en charge pour obtenir le correctif.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage est requis, vous devrez peut-être créer une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux autres questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone service clientèle de Microsoft ou pour créer une demande de service distincte, visitez le site Web Microsoft suivant : Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, c'est parce qu'il n'y a pas de correctif disponible pour cette langue.

Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Plus d'informations
Lorsqu'une application établit une connexion à SQL Server, il établit d'abord un contexte de base de données. Par défaut, la connexion va tenter d'obtenir un verrou de base de données en mode SH. Le verrou De base de données-SH est libéré lorsque la connexion est interrompue ou contexte de base de données est modifiée au cours de la durée de vie de la connexion. Si vous avez de nombreuses connexions actives qui utilisent le même contexte de base de données, vous pouvez avoir le nombre de verrous du type de ressource de base de données pour cette base de données spécifique.

Sur l'ordinateur qui a 16 processeurs ou plus, uniquement des objets de table utilisent un schéma de verrouillage partitionnées. Toutefois, les verrous de base de données ne sont pas partitionnés. Par conséquent, verrouille de nombre de base de données est grande, plus il faut de temps pour SQL Server afin d'obtenir un verrou sur la base de données. La plupart des applications ne rencontrent pas les problèmes causés par cette conception. Mais dès que le nombre dépasse un certain seuil, temps et le travail supplémentaire est nécessaire pour obtenir le verrou. Bien que le coût est uniquement micro secondes pour chaque verrou supplémentaire, la durée totale peut augmenter rapidement car les compartiments de hachage de verrou sont protégés à l'aide d'un verrouillage spinlock. Cela entraîne des cycles processeur supplémentaires et attend pour les autres travailleurs à obtenir le verrou.

Ce correctif introduit le partitionnement de verrous de base de données lorsque l'indicateur de trace T1236 est activé au démarrage. Le verrou de base de données de partitionnement permet de conserver la profondeur de la liste de verrouillage gérable dans chaque partition locale. Cela optimise considérablement le chemin d'accès qui est utilisé pour obtenir un verrou de base de données .

Pour contrôler le verrouillage spinlock LOCK_HASH , vous pouvez utiliser la requête suivante.
SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)DECLARE @counter int = 1WHILE @counter < 100      BEGIN            INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH'            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spinlock_stats ORDER BY [CaptureTime]DROP TABLE #spinlock_stats
Pour plus d'informations sur le diagnostic et la résolution des conflits de verrouillage spinlock sur SQL Server, consultez le document suivant :

Remarque : Bien que ce document soit écrit pour SQL Server 2008 R2, les informations sont toujours applicables à SQL Server 2012.
Références
Pour plus d'informations sur les indicateurs de trace dans SQL Server 2012, consultez le site Web TechNet suivant :


Pour plus d'informations sur la façon de trouver le nombre de verrous de base de données dans l'utilisateur par base de données, utilisez la requête suivante pour calculer cette valeur :
select  Resource_database_id, resource_type, request_mode, request_status,  count (*) 'LockCount' from sys.dm_tran_locks group by  Resource_database_id, resource_type, request_mode, request_status


Propriétés

ID d'article : 2926217 - Dernière mise à jour : 12/03/2015 15:47:00 - Révision : 8.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbautohotfix kbhotfixserver kbmt KB2926217 KbMtfr
Commentaires