Détection de l'utilisation de SQL Server avec une requête
Mon projet actuel va envoyer des requêtes à un serveur sql server constamment et Il peut utiliser 100% de la mémoire ou le PROCESSEUR.
- Comment puis-je vérifier si le serveur est presque pleine utilisation dans une procédure stockée afin que je puisse décider si l'on doit exécuter les requêtes ou pas ou enregistrer les paramètres dans un tableau, de sorte que les requêtes peuvent connaître la charge de travail est élevée et décider quoi faire
- Si non, comment puis-je empêcher SQL server pour atteindre la pleine utilisation?
Plus d'informations sur l'affaire:
Droit maintenant, je sais que notre actuel serveur de test peut traiter de 40 à 50 requêtes par seconde (une procédure stockée spécifique). Et maintenant, nous allons décider combien de requêtes sont envoyées au serveur à chaque seconde. Si nous avons fixé le montant de 1 plus élevé que prévu, à la longue, les requêtes finira par remplir la mémoire virtuelle et le client devra recommencer une instance de sql server périodiquement.
Résultats attendus (Pour les chasseurs):
@memory_usage float, @cpu_usage float; /* in percentage */
Toutes les idées sont les bienvenues. Merci.
source d'informationauteur Uğur Gümüşhan
Vous devez vous connecter pour publier un commentaire.
Serait quelque chose comme cela vous aider?
Script Pour Surveiller l'Utilisation de la Mémoire Par l'Instance de SQL Server
Pour une telle utilisation intensive de SQL Server et d'efforts pour régler tout ça, je suppose que l' (virtuel) de la machine est dédié à SQL Server.
Cela dit, l'obtention de la machine actuelle pourcentages de CPU et de mémoire utilisée devrait faire l'affaire:
Quelques choses à noter:
sys.dm_os_sys_memory
est une bonne source pour les physiques de la machine-utilisation de la mémoire. Il fournit des informations similaires sur la machine de fichier de page de l'utilisation. Dans mon expérience, ses informations changent fréquemment de plusieurs requêtes en une seconde, produisant des résultats différents.sys.dm_os_ring_buffers
est une bonne source pour la machine, l'utilisation de l'UC, mais il n'est pas mis à jour aussi fréquemment - chaque minute de ce que j'ai vu. Peut-être que vous pouvez modifier si vous avez besoin de plus d'informations en temps réel.sys.dm_os_ring_buffers
est un entier, mais j'ai fait@cpuUsage
unfloat
selon vos spécifications. Depuis le proc stockée utilise deuxfloat
params, vous pourriez refactoriser CPU-utilisation de la détermination à fournir une partie fractionnaire sans changer ses appelants.Pas sûr de la façon de le faire en SQL, mais vous pouvez toujours créer une fonction en C# et ensuite les rendre disponibles dans votre SQL Server en tant que procédure stockée à l'aide de liste de révocation de certificats.
http://msdn.microsoft.com/en-us/library/ms131094.aspx