119
5.4 Choix des compteurs
important de comprendre qu’une forte activité des processeurs ne signifie pas que la
puissance ou la quantité des CPU doit être augmentée. Le travail du processeur est
influencé par tous les autres sous-systèmes. Si le disque est inutilement sollicité, ou
trop lent, si la file d’attente sur le disque implique de nombreuses attentes de threads,
si la mémoire vive fait défaut et entraîne donc une plus forte utilisation du disque,
etc. les CPU devront travailler plus. Donc, le temps processeur n’est que la partie
émergée de l’iceberg, vous devez inspecter toutes les raisons possibles de cette
surcharge de travail, avant de tirer vos conclusions.
5.4.2 Compteurs utiles
Memory\Pages/sec
Indique le nombre de pages de mémoire (dans le sens Windows du terme) qui sont
écrites sur le disque, ou lues depuis le disque. Un nombre élevé (par exemple plus de
2 500 pages par secondes, de façon consistante sur un serveur de puissance moyenne,
peut indiquer un manque de mémoire. À corréler avec les compteurs de cache de
SQL Server, et l’activité disque.
MSSQL:Access Methods\Forwarded Records/sec
Indique un nombre le lignes lues via un renvoi d’enregistrement par secondes. Cela
peut permettre de détecter un trop grand nombre de renvois d’enregistrements 1 . Sur
une table sans index clustered, le moteur de stockage crée des pointeurs de renvoi
lorsque la taille d’une ligne modifiée augmente (parce qu’elle contient des colonnes
de taille variable), et qu’elle ne peut plus tenir dans sa page originelle. Ce pointeur
reste en place jusqu’à un compactage (shrink) de la base de données ou jusqu’à ce que
la ligne diminue suffisamment de taille pour réintégrer sa page d’origine. Un trop
grand nombre de renvois diminue les performances d’IO, à cause de l’étape supplémentaire de lecture du pointeur, et de déplacement sur son adresse. Cela ne devient
problématique sur une table que lorsqu’un bon pourcentage de la table contient des
renvois d’enregistrements. Vous pouvez détecter ces tables à l’aide de la fonction de
gestion dynamique sys.dm_db_index_physical_stats :
SELECT
OBJECT_NAME(object_id) as ObjectName, index_type_desc,
record_count, forwarded_record_count,
(forwarded_record_count / record_count)*100 as
forwarded_record_ratio
FROM sys.dm_db_index_physical_stats(
DB_ID('AdventureWorks'),
NULL, NULL, NULL, DEFAULT)
WHERE forwarded_record_count IS NOT NULL;
1. Bien que nous parlions de ligne lorsque nous évoquons la couche logique des bases de données,
le terme enregistrement est utilisé lorsque nous parlons du moteur de stockage.
Précédent

- 131/334

Suivant