Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > NHibernate
NHibernate Forum d'entraide sur l'utilisation du mappeur objet/relationnel NHibernate.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 21h05   #1
dublow
Nouveau Membre du Club
 
Nicolas DELFOUR
Développeur Web
Inscription : novembre 2009
Messages : 57
Détails du profil
Informations personnelles :
Nom : Nicolas DELFOUR
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2009
Messages : 57
Points : 25
Points : 25
Par défaut [NHibernate] récupérer le temps d'execution d'une requete

Bonjour à tous,

J'ai besoin de faire des statistiques sur les requête NHibernate (criteria) afin de connaitre le temps d’exécution et le Sql généré pour ensuite le sauvegarder dans une table sql. Y a t'il quelqu'un qui a déjà fait cela?

Merci d'avance
dublow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 21h27   #2
dublow
Nouveau Membre du Club
 
Nicolas DELFOUR
Développeur Web
Inscription : novembre 2009
Messages : 57
Détails du profil
Informations personnelles :
Nom : Nicolas DELFOUR
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2009
Messages : 57
Points : 25
Points : 25
Dans l'esprit NHibernate profiler...
dublow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h37   #3
WOLO Laurent
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 698
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 36
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Architecte de base de données
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 2 698
Points : 4 070
Points : 4 070
Envoyer un message via Yahoo à WOLO Laurent
D'une manière générale, tous les SGBDR Client/Serveur ont des Profilers, tu peux donc t'en servir aussi.
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h47   #4
B.AF
Membre Expert
 
Inscription : février 2005
Messages : 1 238
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 238
Points : 1 655
Points : 1 655
Il y a beaucoup plus simple que tout cela dans NHibernate qui depuis la version 2.0 intégre la notion de statistiques.

Un bon tuto ici.

Les stats sont disponible dans la factory (stats valables pour tout l'usage de Nhibernate) ou dans la session (stats de l'uow courant).

Dans la factory, on trouve entre autre les temps d'exécution des requêtes.

Good Luck.
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h07   #5
dublow
Nouveau Membre du Club
 
Nicolas DELFOUR
Développeur Web
Inscription : novembre 2009
Messages : 57
Détails du profil
Informations personnelles :
Nom : Nicolas DELFOUR
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2009
Messages : 57
Points : 25
Points : 25
J'ai fait ce test, mais il ne prend en compte que les requêtes Sql mais pas les criteria.
Dans mon code, la session NHibernate se créer dans le Begin_Request et se ferme au End_Request. J'effectue donc les stats juste avant de fermer la session.
J'ai essayé avec log4net, il me sort bien les requêtes mais pas le temps d’exécution...
dublow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 19h54   #6
B.AF
Membre Expert
 
Inscription : février 2005
Messages : 1 238
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 238
Points : 1 655
Points : 1 655
De toutes façon le criteria produit du SQL, donc ....
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 22h42   #7
iberserk
Expert Confirmé
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 514
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 31
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 514
Points : 2 756
Points : 2 756
Envoyer un message via MSN à iberserk
Citation:
J'ai essayé avec log4net, il me sort bien les requêtes mais pas le temps d’exécution...
Est ce pour un besoin temporaire (test de montée en charge etc.) lié à votre cycle de développement ou voulez vous logger cela de manière permanente?


Si c'est ponctuel vous avez (exemple pour SQL Server) le profiler (clic sur outils dans SSMS puis sql profiler) qui vous permet de définir une trace temporaire (ou non) loggant ce que vous voulez (cela peut aller beaucoup plus loin que NH... sans forcément d’intérêt cependant...) dans un fichier une table etc...


Vous pouvez même vous resservir de ce fichier de trace afin de rejouer une routine de requête par exemple...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
MCTS Database Development
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 22h53   #8
dublow
Nouveau Membre du Club
 
Nicolas DELFOUR
Développeur Web
Inscription : novembre 2009
Messages : 57
Détails du profil
Informations personnelles :
Nom : Nicolas DELFOUR
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2009
Messages : 57
Points : 25
Points : 25
Bonsoir,
Merci pour vos conseils, j'ai opté pour log4net et DynamicProxy. Du coup je récupère la requête avec Log4Net et Avec DynamicProxy je démarre un StopWatch().
Les logs des requêtes sont temporaires et sont là pour effectuer des tests de charges.
Je travaille sur sql azure et pour le moment le Trace/Profiler n'est pas présent.
dublow est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h12.


 
 
 
 
Partenaires

Hébergement Web