Symptômes
Lorsqu’un trop grand nombre d’insertions simultanées se produisent dans le même compartiment de hachage ou que le cache de plan SQL Server ad hoc atteint sa limite d’entrée de 160 036, une contention sérieuse est appliquée au SpinLock SOS_CACHESTORE. Dans cette situation, une utilisation élevée de l’UC intervient dans Microsoft SQL Server.
Cause
Ce problème survient lorsque le cache de plan SQL Server atteint sa limite d’entrée et que les offres dont le coût est faible doivent être supprimées pour pouvoir insérer de nouvelles offres. Cela entraîne une contention importante pour le SpinLock SOS_CACHESTORE qui fournit la synchronisation pour les compartiments de table de hachage du cache de plan SQL Server.
Résolution
Informations de mise à jour cumulative
Le problème a été résolu dans la mise à jour cumulative suivante de SQL Server.
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Informations supplémentaires
Le cache de plan comporte deux limites : taille totale et nombre total de plans. Les limites de taille et d’entrée sont expliquées dans le livre blanc suivant :
Planifier les mises en cache internes
Le nombre maximal d’entrées qu’un cache de plan peut contenir correspond à quatre fois le nombre de compartiments. Vous pouvez vérifier ces informations en exécutant les requêtes suivantes :
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
Par exemple, sur les systèmes 64 bits, le nombre de compartiments pour le cache de plan SQL Server est 40 009. Par conséquent, le nombre maximal d’entrées qui peuvent être placées dans le cache de plan SQL Server est 160 036.
Si vous disposez d’une charge de travail qui utilise des requêtes ad hoc différentes, cette limite peut devenir un goulet d’étranglement. La modification apportée par ce Hotfix répond à cette situation. Après avoir installé ce correctif et activé le changement à l’aide de l’indicateur de suivi de démarrage « -T 174 », le nombre de compartiments est augmenté à 160 001 sur les systèmes 64 bits. Le cache du plan est alors en mesure de contenir un maximum de plans 640 004.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.