SQL Process Explorer

Pour moi, sous Windows, l’application la plus importante à toujours été (de loin) Process Explorer de Mark Russinovich, alors quand j’ai commencer a remplir des fonctions de DBA un programme similaire m’a immédiatement manqué pour superviser SQL Server.

Comme j’ai été un développeur (depuis le ZX81 il y a quelques années ;) ) avant de devenir DBA j’ai fini par décider de faire un moi même une application de monitoring pour SQL Server. Et puisque j’ai toujours été reconnaissant à Mark pour la gratuité (et la qualité) de son travail, c’est maintenant mon tour d’offrir mon programme à ceux qui le voudront :

Le programme ne nécessite pas d’installation (comme procexp), c’est un simple executable .NET Framework 3.5 Client profile x86 (~400 Ko) :

Télécharger la dernière version (V1.0) exe & zip
Historique des versions

Il peut donc être lancer de n’importe quel répertoire (dans lequel il va générer un fichier .config pour enregistrer vos paramètres).

Le mode de capture principal est basé sur sys.sysprocesses, sys.dm_exec_requests et sys.dm_exec_sessions et double cliquer sur une ligne de la liste bascule sur l’onglet « Query » pour visualiser la requête et la ré-exécuter si besoin :

QuerySample

Les plus hauts niveaux de CPU, logical read, physical read, write, Wait time, Signal wait et 2 liste de wait configurable sont historisés. En passant la souris sur les histograms on obtient les informations de cette période avec la requête SQL qui était exécuté à ce moment par le process le plus consommateur du compteur concerné :

PopStatem

Il est donc simple de voir ce qu’il se passe en temps réel sur une instance, ou à un n’importe quel moment passé enregistré.

Les 2 listes de waits configurables sont par défaut (le titre se trouve avant les ‘:’ et les waits surveillés sont séparés avec des ‘;’ ensuite) :

IOWait:WRITELOG;IO_COMPLETION;PAGEIOLATCH_DT;PAGEIOLATCH_EX;PAGEIOLATCH_KP;PAGEIOLATCH_SH;PAGEIOLATCH_UP;ASYNC_IO_COMPLETION;

CXPacket:CXPACKET

J’ai ajouté un mode de capture expérimental basé sur la vue sys.dm_exec_query_stats (group by query_hash). Ce mode est accessible dans le menu option :

MenuDmQueryStats

Dans ce mode, vous pouvez voir en violet les requêtes exécutées en parallèle, avec un elapsed time inférieur au worker time (pas une méthode parfaite je dois admettre).

Voilà, après cette petite introduction il ne vous reste plus qu’a l’expérimenter par vous même, en espérant que ça vous sera aussi utile qu’a moi. Si vous avez des idées je suis ouvert à toutes les propositions d’amélioration et si vous trouvez des bugs vous pouvez les signaler dans les commentaires de cette page ou par mail : sqlprocexp@gmail.com

 

Publicités