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 :

SQL SERVER 2008 : Durée d'exécution variable - requête SQL


Sujet :

MS SQL Server

  1. #1
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut SQL SERVER 2008 : Durée d'exécution variable - requête SQL
    Bonjour tout le monde !
    Je suis sur un serveur local SQL SERVER 2008. je constate que la durée d'exécution d'une même requête varie à chaque exécution.
    Exemple :
    1er essai
    --------
    DBCC DROPCLEANBUFFERS
    DBCC FREEPROCCACHE
    DBCC FREESYSTEMCACHE ('ALL')

    USE AdventureWorks;
    GO
    SET STATISTICS TIME ON
    GO
    SELECT *
    FROM Production.ProductCostHistory
    WHERE StandardCost < 500.00;
    GO
    SET STATISTICS TIME OFF;
    GO

    --Resultat 1er essai
    --------------------

    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 164*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    (269*ligne(s) affectée(s))

    SQL Server \endash Temps d'exécution*:
    , Temps UC = 0*ms, temps écoulé = 10*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    2eme essai
    --------
    DBCC DROPCLEANBUFFERS
    DBCC FREEPROCCACHE
    DBCC FREESYSTEMCACHE ('ALL')

    USE AdventureWorks;
    GO
    SET STATISTICS TIME ON
    GO
    SELECT *
    FROM Production.ProductCostHistory
    WHERE StandardCost < 500.00;
    GO
    SET STATISTICS TIME OFF;
    GO

    -- Resultat 2eme essai
    -----------------------
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 165*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    (269*ligne(s) affectée(s))

    SQL Server \endash Temps d'exécution*:
    , Temps UC = 0*ms, temps écoulé = 11*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.


    Ainsi de suite...et le temps d'exécution varie de façon aléatoire !

    Précision : Je suis le seul utilisateur sur le serveur (l'instance est sur mon PC portable) et il n'y a pas d'autre opération sur la base de données entre les différentes exécutions !

    Merci pour l'intérêt que vous portez à ce post.

    Merci d'avance
    Etienne ZINZINDOHOUE
    Billets-Articles

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Qu'est ce qui vous choque la dedans ?

    1ère partie et les 2 essais :

    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 164*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    -------------------------------------------------

    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 165*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    (269*ligne(s) affectée(s))

    2ème partie et les 2 essais :

    SQL Server \endash Temps d'exécution*:
    , Temps UC = 0*ms, temps écoulé = 10*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    SQL Server \endash Temps d'exécution*:
    , Temps UC = 0*ms, temps écoulé = 11*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    Vous avez dans le cas le plus défavorable 1ms d'écart entre vos 2 jeux d'essais.

    ++

  3. #3
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Bonjour,

    Qu'est ce qui vous choque la dedans ?

    1ère partie et les 2 essais :

    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 164*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    -------------------------------------------------

    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 165*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    (269*ligne(s) affectée(s))

    2ème partie et les 2 essais :

    SQL Server \endash Temps d'exécution*:
    , Temps UC = 0*ms, temps écoulé = 10*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    SQL Server \endash Temps d'exécution*:
    , Temps UC = 0*ms, temps écoulé = 11*ms.
    Temps d'analyse et de compilation de SQL Server :
    , Temps UC = 0*ms, temps écoulé = 0*ms.

    Vous avez dans le cas le plus défavorable 1ms d'écart entre vos 2 jeux d'essais.

    ++

    Ce qui est gênant c'est de ne pas avoir une valeur fixe. Parce que pour l'optimisation d'une requête le choix sera un peu difficile en se basant sur des durées d'exécution variable !
    Il arrive des fois où l'écart (durée d'exécution) reste non négligeable entre 2 executions.
    Le plus gênant c'est que avec SQL Profiler la durée d'exécution de la requête ne change pas !
    A quoi est due cette variation avec les STATISTICS ?
    Etienne ZINZINDOHOUE
    Billets-Articles

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 848
    Points : 52 964
    Points
    52 964
    Billets dans le blog
    6
    Par défaut
    Le temps UC (seul véritable intérêt) est le temps pendant lequel les CPU ont été mobilisés pour traiter votre requête.
    Le temps écoulé est le temps pendant lequel l'ordre SQL a été envoyé depuis SSMS à SQL Server, puis exécuté, puis retourné de SQL server à votre outils client (SSMS). A moins que SSMS soit le seul process en exécution, et que vous soyez seul sur le réseau, ce temps prend "dans la gueule" tous les temps des concurrents...

    Vous comprendrez donc que la notion de temps écoulé varient très fortement et n'a en pratique aucun intérêt !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut Merci pour la précision
    Citation Envoyé par SQLpro Voir le message
    Le temps UC (seul véritable intérêt) est le temps pendant lequel les CPU ont été mobilisés pour traiter votre requête.
    Le temps écoulé est le temps pendant lequel l'ordre SQL a été envoyé depuis SSMS à SQL Server, puis exécuté, puis retourné de SQL server à votre outils client (SSMS). A moins que SSMS soit le seul process en exécution, et que vous soyez seul sur le réseau, ce temps prend "dans la gueule" tous les temps des concurrents...

    Vous comprendrez donc que la notion de temps écoulé varient très fortement et n'a en pratique aucun intérêt !

    A +

    Merci pour la précision.

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/07/2013, 16h56
  2. Réponses: 0
    Dernier message: 04/05/2010, 22h38
  3. Réponses: 2
    Dernier message: 30/04/2009, 16h35
  4. Réponses: 9
    Dernier message: 19/03/2008, 19h52
  5. Réponses: 3
    Dernier message: 11/01/2006, 18h35

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