Wednesday, February 22, 2012

SQL Server Buffer Pool et Buffer Cache Hit Ratio

Posted by Yukon on 1. August 2011 12:59

On a souvent tendance à confondre SQL Server Buffer Cache et Buffer Cache Hit Ratio. Cet article a pour objectif de présenter brièvement la différence entre les deux éléments.

SQL Server Buffer Cache ?
Le buffer cache est un espace du buffer pool (ou cache de données) qui maintient en mémoire vive autant qu’il est possible de page de données et d’index. La lecture à partir de la RAM étant environ mille fois plus rapide que sur le disque dur, on en comprend l’intérêt. En effet, ce cache est géré par un composant de SQLOS nommé buffer manager, dont le travail est la lecture des pages du disque vers le buffer, et l’écriture des pages modifiées du buffer vers le disque.

Buffer Cache Hit Ratio ?
Le buffer cache hit ratio (ou taux d’accès au cache des tampons) est le rapport du nombre de pages lues en RAM par rapport au nombre de pages lues à partir des disques. Il s’exprime en pourcentage et plus la valeur de ce pourcentage est élevé, meilleures sont les performances. Dans les meilleures conditions de performance, le buffer cache hit ration doit être supérieur au égal à 90%.

Dans la pratique, il est possible d’utiliser le moniteur de performance Windows (PerfMon) pour déterminer la valeur du buffer cache hit ratio ou.

  1. Start > Programs > Administrative Tools > Reliability and Performance Monitor
  2. Clique-droit sur le graphe de Performance Monitor puis choisir Add Counters
  3. Sélectionner l’objet SQL Server :Buffer Manager
  4. Ajouter, Buffer Cache Hit Ratio

 

La valeur de Buffer Cache Hit Ratio peut être obtenue à partir de la requête suivante:

SELECT CAST( 
        ( 
          SELECT CAST (cntr_value AS BIGINT) 
          FROM sys.dm_os_performance_counters  
          WHERE counter_name = 'Buffer cache hit ratio' 
        )* 100.00 
        / 
        ( 
          SELECT CAST (cntr_value AS BIGINT) 
          FROM sys.dm_os_performance_counters  
          WHERE counter_name = 'Buffer cache hit ratio base' 
        ) AS NUMERIC(6,3) 
      ) 

Pour connaitre les détails sur l’utilisation mémoire (RAM) des serveurs SQL Server, vous pouvez exécuter la commande DBCC suivante :

DBCC MEMORYSTATUS;

 

Comments are closed