web-dev-qa-db-fra.com

SQL Server Perfmon: compilations / sec> Demandes de lots / SEC

Je regarde diverses métriques de Perfmon sur l'une des instances SQL Server de notre client essayant d'obtenir une bonne mesure de l'endroit où notre base de données (ou serveur) pourrait utiliser des améliorations.

Une mesure qui m'a perplexe est le rapport de deux métriques de Perfmon: compilations/sélectes et demandes de lot/s.

Selon - ce post , " Il s'agit d'une règle générale que compilations/s doit être à 10% ou moins que les demandes de lot total/sec ".

Notre application dispose d'un service Windows qui invoque des calculs planifiés contre la base de données toutes les heures. Comme des horlogères, dans mes données de Perfmon CSV, je peux voir les pointes dans les compilations/SEC et les demandes de lot/s. Ce que je ne m'attendais pas à voir, c'est le nombre de compilations/secs pour dépasser les demandes de lots/seconde.

Je regarde 15 secondes échantillons de Perfmon centré sur le temps où nos calculs lancent:

enter image description here

Qu'est-ce que cela indique généralement? Est-ce que cela a même un sens? Pourquoi devrions-nous compiler plus de déclarations que d'exécuter? Est-ce que je manque quelque chose?

5
John Russell

Désolé, de ne pas dénoncer que les conseils de Thomas, mais veuillez prendre des "règles générales" avec un grain de sel ou simplement les jeter de la fenêtre.

Base de référence.

Qu'est-ce qui est normal pour votre système? Le système répond-il actuellement ok?

S'il n'y a pas de problème de performance, n'essayez pas de comparer votre système à un nombre quelconque de quelqu'un cueilli de l'air ou éteint potentiellement un système et une charge de travail très spécifiques, et laissez-le tout pour essayer de "résoudre".

Plus précisément, les demandes de lots et les compilations n'ont pas de corrélation très agréable et pratique dans tous les scénarios. Vous devez comprendre votre charge de travail avant de commencer à paniquer parce que vos comptoirs ont frappé un seuil de seuil mis dans un poste quelque part. Si tous vos lots consistent en exactement d'une instruction, alors oui, avoir plus de compilations/secondes que les demandes de lot/SEC pourraient sembler hors de l'ordinaire (mais pourrait toujours indiquer n problème). Dans la plupart des cas, vous envoyez plus d'une instruction dans un lot. Si tel est le cas - et en particulier si vous utilisez des éléments tels que ORMS ou beaucoup de SQL dynamique très variable, où vous Will souffrir d'un grand nombre de compilations - je ne serais vraiment pas surpris de voir un contre-compteur plus élevé que l'autre.

Que vous ayez besoin de faire quelque chose à ce sujet, dans ce cas, est un problème complètement différent.

7
Aaron Bertrand