J'ai une exécution de requête lente dans mon serveur SQL 2016.
Configurations de serveur:
J'ai couru le ring buffer
Requête Pour vérifier si la mémoire physique est faible. La raison pour laquelle j'ai vérifié pour la tampon d'anneau pour la pression de la mémoire est parce que mon cache de plan est également effacé fréquemment même si personne n'exécute aucun script pour effacer le cache.Je obtenez le résultat ci-dessous où je vois des mêmes valeurs pour Avail Phys Mem.KB
.
Une chose que j'ai apprise est pour tout RESOURCE_MEMPHYSICAL_LOW
Le processus d'indicateur est 2, ce qui signifie que le problème de la mémoire est dans la mémoire allouée à SQL Server n'est pas le reste de la mémoire disponible pour OS et d'autres applications. POUR VOTRE INFORMATION. Ceci est un serveur dédié SQL Server.
J'ai également vérifié dans le moniteur de performance pour Avaialable MBytes
qui montre la valeur 16.662.00 (16 Go) comme ci-dessous.
Je pense que 16 Go suffit pour les applications OS + Autres applications, ceci étant un serveur dédié SQL Server.
Vérifié également le diagnostic du serveur. Il dit que 25 Go est disponible.
Alors maintenant je suis confus si:
RESOURCE_MEMPHYSICAL_LOW
Le drapeau est défini par le système d'exploitation ou du processus externe ou SQL Server?Détails supplémentaires selon la réponse de @ Shanky.
HAND_EXTERNAL
augmente.Plus de détails.
Est-ce que cette énorme bourse de mémoire (une requête que j'ai vérifiée, une subvention de mémoire est ~ 7 Go) entraîne une pression de mémoire de SQL Server et peut-être que celles-ci est la cause du clarification du cache de plan et RESOURCE_MEMPHYSICAL_LOW
drapeau.
y a-t-il une pression de mémoire dans ce serveur.
Avec les informations limitées, je ne peux pas dire avec caution. Besoin de plus de paramètres et de sortie de Perfmon pour raconter la pression de la mémoire. Mais oui, de la sortie de la requête que vous avez postée pour le moment 2018-10-23 11:22:30:457
Il y avait en effet une mémoire faible pour certains processus (s), pas le système SQL Server dans son ensemble.
l'indicateur de ressource_memphysical_low est défini par le système d'exploitation ou du processus externe ou SQL Server.?
Regardez la sortie qu'il dit RESOURCE_MEMPHYSICAL_LOW
a des valeurs de 2
à partir de IndicatorProcess
, ce qui signifie que certains processus qui fonctionnaient étaient effectivement confrontés à une pression de mémoire, si IndicatorSystem
aurait eu une valeur de 2, il aurait été une pression de mémoire large. Notez également que la pression de la mémoire provient de la mémoire virtuelle basse (RAM) faible (VAS). Donc, vous pouvez voir juste prendre une valeur pour un morceau de temps, il est difficile de dire qu'il y a continu pression de mémoire. Je vous suggère de lire à l'aide de sys.dm_os_ring_buffers pour diagnostiquer les problèmes de mémoire dans SQL Server pour comprendre ce que signifie les valeurs indicatrices et indicateurs
devrais-je activer LPIM de résoudre ce problème?
LPIM est pas Pour résoudre le problème, il ne se reproduira que masque Le problème et arriverait comme solution de contournement. Vous devez trouver ce qui cause le moniteur de ressources pour signaler une notification de mémoire faible, il pourrait être possible que certains processus fonctionnent le causent. Maintenant, Planifiez le cache Fréquemment effacé, c'est quelque chose que beaucoup de personnes ont signalé auprès de SQL Server 2016 en avant et it mai Soyez dû au magasin de requêtes, utilisez-vous un?. STORE DE QUERY ETE UTILISÉE POUR ÊTRE CULLIER DERRIÈRE LE CACHE CLÉDITION, mais puisque vous êtes sur la dernière fois SP Je doute de ce facteur.
Pour voir une pression de mémoire pour le cache, nous pouvons également utiliser dmv sys.dm_os_memory_cache_clock_hands
SELECT *
FROM sys.dm_os_memory_cache_clock_hands
WHERE rounds_count > 0
Si rounds_count
augmente cela signifie qu'il y avait une pression qui a forcé les horloges pour balayer le cache plus fréquemment et supprimez les entrées.
ÉDITER:
Je suis confronté à une énorme subvention de la mémoire par certaines requêtes et cela cause-t-il de ressource_semaphore qui attend d'autres requêtes. Cette énorme subvention de mémoire (une requête que j'ai vérifié, une subvention de mémoire est ~ 7 Go) entraîne une pression de mémoire de SQL Server et peut-être la cause du clarification du cache de plan et de la ressource_memphysical_low drapeau.
Oui très probable, je vous ai vu soulevé Thread spécifique Pour cette question et j'ajouterais seulement cela avant d'aller pour que vous puissiez avoir des statistiques mises à jour et des index défragmentés. Des statistiques obsolètes peuvent conduire à un mauvais plan qui peut finir par demander plus de mémoire et donc sémaphore attend.
Vous trouverez ci-dessous une liste des threads parlant de problème similaire