IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Tester la performance d'un trigger sous SQL Server 2008


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut Tester la performance d'un trigger sous SQL Server 2008
    Bonjour,

    J'ai trois façons de faire un Trigger l'un avec des curseurs l'autre avec une table temporaire, et un autre avec une énorme requête qui utilise les "union all" et "intersect"...
    J'ai fait les trois et j'aimerais voir le gain ou la perte de performance pour chacun...

    Je sais qu'il y a le "Activity Monitor" dans SQL Management studio mais je sais pas m'en servir ...

    Le plus important serait de voir le temps d'exécution après s'il y a plus c'est que mieux !!!

    Je spécifie que je connais déjà le résultat, soit l'énorme requête, la table temporaire et les curseurs dans l'ordre de rapidité, mais il me faudrait des preuves.

    Merci de votre aide membre de développez !

  2. #2
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SET statistics IO ON
    ....
    set statistics IO OFF
    pour les information d'I/O
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SET statistics TIME ON
    ....
    set statistics TIME OFF
    pour le temps CPU

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Attention à ce que vous retourne SET STATISTICS TIME, car :

    • le temps d'exécution dépend ce qui se passe dans la base de données et / ou sur le serveur. Donc soyez certain que vous êtes seul à tester sur l'instance SQL Server

    • Exécutez la requête deux fois au moins puisque la première exécution comprendra la temps de compilation de la requête qui déclenche le trigger

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    si je suis pas le seul sur l'instance ça expliquerait le fait que le résultat de mon message contient une centaine de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 2 ms.
    Avec différentes valeurs...?

    car j'ai fait un INSERT et je suis sur d'être le seul a utiliser la table...
    Donc je comprends pas pourquoi j'aurais une centaine de message...

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Cela est dû aux diverses instructions qui composent l'instruction qui déclenche le trigger et a l'exécution du trigger lui-même.
    Il y a je crois deux sorties par instruction ...

    @++

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    Cela est dû aux diverses instructions qui composent l'instruction qui déclenche le trigger et a l'exécution du trigger lui-même.
    Il y a je crois deux sorties par instruction ...
    Et c'est possible d'avoir la somme des temps des instructions qui composent l'instruction qui déclenche le trigger ?

    ou il faut compter à la main xD

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Le mieux est pour cela d'utiliser le Profiler ou bien les statistiques du client.
    Mais dans ce dernier cas, vous n'aurez que la durée totale d'exécution ...

    @++

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    Le mieux est pour cela d'utiliser le Profiler ou bien les statistiques du client.
    Merci beaucoup je vais voir de ce coté alors connaissez vous un tuto sur l'utilisation du Profiler ?

    (ps le lien ne marche pas pour moi "statistiques du client")

  9. #9
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Désolé pour les statistiques du client, je viens de corriger le lien.

    Pour le Profiler, j'ai créé un tutoriel sur les traces côté serveur.
    Dans votre cas, vous n'avez besoin que d'une trace côté client, donc vous pouvez suivre le tutoriel jusqu'au paragraphe II inclus.

    Après avoir décoché tous les événements précochés, cliquez sur le bouton "Show all events", puis dans la catégorie T-SQL, cochez la colonne TextData et duration (en microsecondes) de l'événement SQL:StmtCompleted.
    Ajoutez également Reads et Writes pour avoir le nombre de pages lues et écrites par chaque requête.

    Cliquez enfin sur le bouton "Run".

    Exécutez maintenant vos requêtes : elle vont s'afficher dans le Profiler, avec leur caractéristiques d'exécution

    Si vous exécutez une trace alors que vous êtes plusieurs à exécuter des requêtes sur la base de données ou que vous êtes en production, sélectionnez toujours le minimum de colonnes et d'événements, afin de minimiser la charge.
    N'oubliez également jamais d'enregistrer dans un fichier (Cochez la case portant le même nom à la 2e capture d'écran de mon tutoriel )

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de trigger sous SQL Server 2008
    Par lessoy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/04/2013, 12h49
  2. Trigger sous SQL-Server
    Par momedalhouma dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/02/2012, 16h46
  3. Réponses: 20
    Dernier message: 15/05/2009, 14h05
  4. Performance d'une requête sous SQL Server 2005
    Par Menoto dans le forum Développement
    Réponses: 4
    Dernier message: 20/03/2008, 09h58
  5. Performance d'une requête sous SQL Server 2005
    Par Menoto dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/03/2008, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo