128
Chapitre 5. Analyse des performances
MSSQL:Transactions\Version Generation Rate (KB/s) et MSSQL:Transactions\Version Cleanup Rate
(KB/s)
Indiquent le nombre de Ko de dépôts de versions créés et supprimés par seconde. Des
valeurs importantes indiquent une utilisation importante du row versioning, mais si
les compteurs généraux du système (disque, mémoire, CPU) ne montrent pas de
pression excessive, c’est le signe d’un fonctionnement de tempdb non bloquant, ce
dont on peut se féliciter. Par contre, la corrélation avec une augmentation de la pression sur le système, peut nous donner des indications de sa cause.
5.4.4 Compteurs utilisateur
L’objet de compteurs MSSQL:User Settable permet de récupérer des compteurs
générés explicitement dans votre code. Utilisez-le pour afficher des statistiques sur
des opérations dont vous voulez connaître la fréquence d’utilisation, ou le volume.
Vous pouvez par exemple renvoyer un nombre de lignes affectées par un traitement,
ou le nombre de lignes dans une table.
Vous disposez de dix compteurs, numérotés de 1 à 10. Vous devez mettre à jour la
valeur du compteur, en exécutant la procédure stockée sp_user_counterX, où X est le
numéro du compteur. Par exemple, pour passer le nombre de lignes affectées par la
dernière instruction de votre procédure au compteur 1, vous écririez :
EXEC sp_user_counter1 @@ROWCOUNT
Cette valeur sera attribuée au compteur, qui la restituera tant que vous n’exécuterez pas sp_user_counter1 à nouveau. Ainsi, pour afficher le nombre de lignes d’une
table (sa cardinalité), vous pouvez créer un déclencheur sur INSERT et DELETE, qui
exécute cette procédure.
5.4.5 Identification de la session coupable
Lorsque vous constatez une augmentation anormale de l’activité CPU, vous
souhaitez sans doute entrer dans les détails et identifier la session SQL Server
responsable. C’est possible en corrélant l’identifiant de thread Windows et le kpid
des informations de session SQL Server. Le désavantage de cette opération est son
côté fastidieux, et surtout sa durée : il se peut qu’une fois la première partie de
l’opération effectuée, la session ait déjà terminé son travail, et donc qu’on arrive trop
tard pour recueillir les informations nécessaires.
Vous devez premièrement trouver l’identifiant du thread qui consomme un
niveau important de CPU. Vous disposez pour cela des compteurs de performances
Thread : % Processor Time et Thread : ID Thread. Sélectionnez toutes les instances
Sqlservr. Affichez le résultat en mode rapport et cherchez le thread consommateur,
comme indiqué en figure 5.15.
Précédent

- 140/334

Suivant