Symptômes
Supposons que vous avez de nombreuses statistiques et tables et que les tables contiennent de nombreuses colonnes dans une base de données Microsoft SQL Server 2012 ou SQL Server 2014. Lorsque vous exécutez de nombreuses requêtes ad hoc pour récupérer des données à partir de ces tables simultanément, vous pouvez rencontrer des attentes CMEMTHREAD pendant l’exécution.
Résolution
Informations sur les mises à jour cumulatives
Le problème a été résolu pour la première fois dans la mise à jour cumulative suivante de SQL Server.
- Mise à jour cumulative 2 pour SQL Server 2014 SP1
- Mise à jour cumulative 9 pour SQL Server 2014
- Mise à jour cumulative 7 pour SQL Server 2012 SP2
Recommandation : Installer la dernière mise à jour cumulative pour 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. Nous vous recommandons de télécharger et d’installer les dernières mises à jour cumulatives pour SQL Server :
- Dernière mise à jour cumulative pour SQL Server 2014 SP1
- Dernière mise à jour cumulative pour SQL Server 2014
- Dernière mise à jour cumulative pour SQL Server 2012 SP2
Informations supplémentaires
Lorsque vous compilez ou recompilez une requête dans SQL Server 2012, le moteur doit obtenir les entrées de l’histogramme statistique. Nous devons effectuer une analyse de la table système, puis charger l’histogramme spécifique des tables impliquées dans la mémoire ou le cache. Ces entrées de la table système (pour les statistiques) sont stockées dans le cache de la table système (CACHESTORE_SYSTEMROWSET). L’objet de mémoire utilisé pour créer ces entrées dans le cache n’est pas partitionné et est global.
Par conséquent, si des allocations de mémoire simultanées sont effectuées au cours de cette opération, vous rencontrerez des attentes CMEMTHREAD sur cet objet mémoire. Cela se produit généralement lorsque vous soumettez un grand nombre de requêtes qui nécessitent une compilation ou une recompilation.
Ce correctif logiciel modifie l’objet de mémoire global à partitionner afin que les allocations de mémoire simultanées qui utilisent le cache de la table système ne rencontrent pas de conflits et que les attentes du CMEMTHREAD ne soient pas rencontrées.
Pour plus d’informations sur ce problème similaire, consultez l’article 3026082 de la Base de connaissances : CORRECTIF : SOS_CACHESTORE contention de verrouillage tournant sur le cache de l’ensemble de lignes de table système entraîne une utilisation élevée du processeur en SQL Server 2012 ou 2014.
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».