Profiling de requêtes SQL en Java

Un des outils les plus utiles et les plus méconnus que je connais pour repérer les goulots d’étranglements d’une application Java/SQL est l’ensemble P6Spy / IronEye :

  • P6Spy est le driver se substituant au driver JDBC d’origine et construisant un log de toutes les requêtes passées, avec leur temps d’exécution
  • IronEye est le frontal graphique qui permet d’analyser ces logs.

Malheureusement, la société éditant IronEye/IronTrack a semble t’il disparue, laissant son outil dans l’oubli.

J’ai vu que plusieurs personnes sur le net étaient à la recherche d’une version en download de IronTrack, je prend sur moi le fait de la proposer ici. Si je viole un copyright quelconque, merci de me le signaler, je retirerai le fichier !

Le packaging complet P6Spy/IronEye est disponible ici !

Le principe d’installation est le suivant :

  1. Dans son accès base de données (pool, classe d’installation…) remplacer le nom de son driver habituel par le driver P6Spy : com.p6spy.engine.spy.P6SpyDriver
  2. Placer dans le CLASSPATH les deux archives p6spy.jar et irontracksql.jar
  3. Editer le fichier spy.properties, et modifier le nom du vrai driver utilisé par celui que vous utilisiez jusqu’alors. Par exemple pour MySQL : realdriver=com.mysql.jdbc.Driver
  4. Toujours dans le fichier spy.properties, modifiez le port réseau à utiliser pour scruter l’application :
    monitorport=3000

Et c’est tout !

IronEye est une application à lancer sur le poste client, en Java/Swing. On la configure en donnant l’adresse IP du serveur, et le monitorport que vous venez d’ouvrir.

IronTrack

L’outil est complet, et propose une vue d’ensemble bien pratique regroupant :

  • La liste de toutes les requêtes SELECT passées via le driver, avec leur nombre d’occurences
  • Le temps moyen et maximum d’envoi, d’exécution, et de récupération des données pour chaque requête
  • Le nombre moyen d’enregistrement retourné pour chacune des requêtes

Indispensable, je vous dis !!