Comment voir le taux de réussite du cache SQL Server?

J'utilise SQL Server 2008 Enterprise. Je vais émettre beaucoup de requêtes sur SQL Server. Et je pense que le server SQL lui-même utilisera une certaine optimization en interne, comme la prétraction de données dans le cache de données interne de SQL Server ou l'access à des requests fréquentes de données provenant du cache avant de charger le file de page physique pour améliorer les performances.

Des solutions pour voir le taux de réussite du cache interne SQL Server? Ou toutes les meilleures pratiques pour régler le cache pour améliorer la requête?

merci d'avance George

Jetez un oeil à BOL: SQL Server, Buffer Manager Object .

Les deux domaines que vous devriez aborder en premier sont:

  • Le cache de la procédure est la zone de memory où SQL stocke vos plans de requête.

  • Le cache du tampon est la zone de memory où les pages de données sont stockées.

Compteurs perfmon pertinents:

  • Taux de réduction du cache tampon
  • Espérance de vie de la page
  • La page lit / sec

Les principaux problèmes de performance de SQL Server 2005 pour les applications OLTP contiennent les éléments suivants:

Goulot d'étranglement CPU si …

  • Le signal attend> 25% des attentes totales. Voir sys.dm_os_wait_stats pour les attentes du signal et Total attend. Le signal attend la mesure du time passé dans la queue en attente en attente de la CPU. Des signaux élevés indiquent un goulot d'étranglement de l'UC.

  • Réglez la réutilisation <90%. Un plan de requête est utilisé pour exécuter une requête. La réutilisation du plan est souhaitable pour les charges de travail OLTP car la création du même plan (pour des transactions similaires ou identiques) est un gaspillage de ressources CPU. Comparez SQL Server SQL Statistics: batch requests / sec aux compilations SQL / sec. Calculez le plan de réutilisation comme suit: Plan de réutilisation = (Requêtes par lots – compilations SQL) / Requêtes par lot. Exception particulière à la règle de réutilisation du plan: les plans de coût zéro ne seront pas mis en cache (non réutilisés) dans SQL 2005 SP2. Les applications qui utilisent des plans de coût zéro auront une réutilisation du plan plus faible, mais ce n'est pas un problème de performance.

  • Type d'attente parallèle cxpacket> 10% des attentes totales. Le parallélisme sacrifie les ressources CPU pour la vitesse d'exécution. Compte tenu des volumes élevés d'OLTP, les requêtes parallèles réduisent habituellement le débit OLTP et devraient être évitées. Voir sys.dm_os_wait_stats pour les statistics d'attente.

Goulot d'étranglement de la memory si …

  • L'espérance de vie moyenne généralement faible de la page. Voir le countur d'espérance de vie de la page moyenne qui se trouve dans l'object Perfmon, le gestionnaire de memory tampon de SQL Server (cela représente le nombre moyen de secondes qu'une page rest dans le cache). Pour OLTP, une durée de vie moyenne de 300 pages est de 5 minutes. Quelque chose de less pourrait indiquer la pression de la memory, les index manquants ou un cache de memory cache.

  • Une forte baisse soudaine de l'espérance de vie de la page. Les applications OLTP (p. Ex., Les petites transactions) devraient avoir une espérance de vie stable (ou en augmentation lente). Voir l'object Perfmon SQL Server Buffer Manager.

  • En attente de subventions de memory. Voir les subventions de memory du countur en attente, dans l'object Perfmon SQL Server Memory Manager. Les petites transactions OLTP ne devraient pas nécessiter de subvention de memory importante.

  • Des gouttes soudaines ou un faible taux de saturation de SQL Cache. Les applications OLTP (p. Ex. Les petites transactions) devraient avoir un taux de réussite élevé. Étant donné que les transactions OLTP sont petites, il ne devrait pas y avoir (1) grandes baisses dans les taux de réussite du Cache SQL ou (2) des taux de réussite toujours less élevés dans le cache <90%. Les gouttes ou le faible nombre de cache peuvent indiquer une pression de memory ou des index manquants.