Symptômes
Lorsque trop d’insertions simultanées se produisent dans le même compartiment de hachage ou que le cache de plan de SQL Server ad hoc atteint sa limite d’entrée de 160 036, une contention importante sur SOS_CACHESTORE verrouillage tournant se produit. Dans ce cas, une utilisation élevée du processeur se produit dans Microsoft SQL Server.
Cause
Le problème se produit lorsque le cache du plan SQL Server atteint sa limite d’entrée et que les plans dont le coût est faible doivent être supprimés pour insérer de nouveaux plans. Cela entraîne une forte contention pour le SOS_CACHESTORE verrouillage tournant qui fournit la synchronisation pour les compartiments de table de hachage du cache du plan SQL Server.
Résolution
Informations de mise à jour cumulative
Le problème a été résolu pour la première fois dans la mise à jour cumulative suivante de SQL Server.
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous 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 du plan a deux limites : la taille totale et le nombre total de tous les plans. Les limites de taille et de nombre d’entrées sont expliquées dans le livre blanc suivant :
Planifier les éléments internes du cache
Le nombre maximal d’entrées qu’un cache de plan peut contenir est de 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 du plan SQL Server est de 40 009. Par conséquent, le nombre maximal d’entrées pouvant tenir dans le cache du plan SQL Server est de 160 036.
Si vous avez une charge de travail qui utilise différentes requêtes ad hoc, cette limite peut devenir un goulot d’étranglement. La modification apportée par ce correctif logiciel résout cette situation. Après avoir installé ce correctif et activé la modification à l’aide de l’indicateur de trace de démarrage « -T 174 », le nombre de compartiments est augmenté à 160 001 sur les systèmes 64 bits. Le cache de plan peut alors contenir un maximum de 640 004 plans.
État
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».