118
Chapitre 5. Analyse des performances
baser sur le compteur MSSQL:General Statistics\Active Temp Tables pour connaître le nombre de tables temporaires dans tempdb, ou MSSQL:General Statistics\Temp
Tables Creation Rate pour une quantité de tables temporaires utilisateur créées par
seconde. Référez-vous à la section dédiée à tempdb pour plus de détails.
MSSQL:General Statistics\Temp Tables Creation Rate
Indique le nombre de tables temporaires utilisateurs créées par seconde. Le compteur
MSSQL:General Statistics\Temp Tables For Destruction retourne le nombre de
tables temporaires marquées pour suppression pour le thread de nettoyage. Ces
compteurs vous donnent une bonne idée du poids des tables temporaires dans votre
code SQL, et des problèmes potentiels qu’elles peuvent produire (contention des
tables de métadonnées dans tempdb, par exemple, voir section 8.3.1).
PhysicalDisk\Avg. Disk Queue Length
Longueur moyenne de la file d’attente sur un disque. Le disque dur étant à accès
séquentiel (une seule tête de lecture, donc une seule lecture/écriture à la fois), les
processus qui veulent accéder au disque lorsque celui-ci est déjà en utilisation, sont
placés dans une file d’attente. Il s’agit donc de temps perdu à faire la queue, comme
aux caisses d’un supermarché. Dans l’idéal, ce compteur devrait toujours être à 0,
voire 1, avec des possibilités de pointes. Si la valeur est de façon consistante à 2 ou
plus, vous avez un goulot d’étranglement sur le disque. Que faire ? Les possibilités
sont, dans l’ordre logique d’action :
• diminuer les besoins de lecture sur le disque, en optimisant les requêtes, ou la
structure physique de vos données, notamment en créant des index pour
éviter les scans ;
• ajouter de la RAM, pour augmenter la taille du buffer, et diminuer les besoins
de lecture sur le disque ;
• déplacer les fichiers de base de données ou de journal de transaction les plus
utilisés, sur d’autres disques, pour partager la charge : faire du scale-out (répartition de charge) ;
• utiliser un disque plus rapide, avec un meilleur temps d’accès, un contrôleur
plus rapide, ou utiliser un sous-système disque plus performant (SAN,
stripe…). En d’autres termes, faire du scale-up.
Processor\% Processor Time
Pourcentage d’utilisation des processeurs logiques (deux instances sur un Dual
Core). La valeur retournée est soit la moyenne de tous les processeurs si vous affichez
toutes les instances, soit par instance. C’est le compteur de base pour avoir une idée
de départ de la charge de votre serveur. Une machine dont les processeurs sont constamment proches du 100 % a un problème. Soit elle a atteint les limites de ses capacités, et il faut donc songer à acquérir du nouveau matériel, que ce soit en scale-up ou
en scale-out (répartition de charge), soit un élément du système entraîne une
surcharge. Vous amener à identifier cet élément est un des objectifs de ce livre. Il est
Chapitre 5. Analyse des performances
baser sur le compteur MSSQL:General Statistics\Active Temp Tables pour connaître le nombre de tables temporaires dans tempdb, ou MSSQL:General Statistics\Temp
Tables Creation Rate pour une quantité de tables temporaires utilisateur créées par
seconde. Référez-vous à la section dédiée à tempdb pour plus de détails.
MSSQL:General Statistics\Temp Tables Creation Rate
Indique le nombre de tables temporaires utilisateurs créées par seconde. Le compteur
MSSQL:General Statistics\Temp Tables For Destruction retourne le nombre de
tables temporaires marquées pour suppression pour le thread de nettoyage. Ces
compteurs vous donnent une bonne idée du poids des tables temporaires dans votre
code SQL, et des problèmes potentiels qu’elles peuvent produire (contention des
tables de métadonnées dans tempdb, par exemple, voir section 8.3.1).
PhysicalDisk\Avg. Disk Queue Length
Longueur moyenne de la file d’attente sur un disque. Le disque dur étant à accès
séquentiel (une seule tête de lecture, donc une seule lecture/écriture à la fois), les
processus qui veulent accéder au disque lorsque celui-ci est déjà en utilisation, sont
placés dans une file d’attente. Il s’agit donc de temps perdu à faire la queue, comme
aux caisses d’un supermarché. Dans l’idéal, ce compteur devrait toujours être à 0,
voire 1, avec des possibilités de pointes. Si la valeur est de façon consistante à 2 ou
plus, vous avez un goulot d’étranglement sur le disque. Que faire ? Les possibilités
sont, dans l’ordre logique d’action :
• diminuer les besoins de lecture sur le disque, en optimisant les requêtes, ou la
structure physique de vos données, notamment en créant des index pour
éviter les scans ;
• ajouter de la RAM, pour augmenter la taille du buffer, et diminuer les besoins
de lecture sur le disque ;
• déplacer les fichiers de base de données ou de journal de transaction les plus
utilisés, sur d’autres disques, pour partager la charge : faire du scale-out (répartition de charge) ;
• utiliser un disque plus rapide, avec un meilleur temps d’accès, un contrôleur
plus rapide, ou utiliser un sous-système disque plus performant (SAN,
stripe…). En d’autres termes, faire du scale-up.
Processor\% Processor Time
Pourcentage d’utilisation des processeurs logiques (deux instances sur un Dual
Core). La valeur retournée est soit la moyenne de tous les processeurs si vous affichez
toutes les instances, soit par instance. C’est le compteur de base pour avoir une idée
de départ de la charge de votre serveur. Une machine dont les processeurs sont constamment proches du 100 % a un problème. Soit elle a atteint les limites de ses capacités, et il faut donc songer à acquérir du nouveau matériel, que ce soit en scale-up ou
en scale-out (répartition de charge), soit un élément du système entraîne une
surcharge. Vous amener à identifier cet élément est un des objectifs de ce livre. Il est
