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

Développement SQL Server Discussion :

Pourquoi ma requête prend autant de temps dans une Transaction? [2000]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Par défaut Pourquoi ma requête prend autant de temps dans une Transaction?
    Bonjour à tous,
    Tout d'abord, je vous explique le contexte: j'ai codé 5 procédures stockées pour alimenter plusieurs tables d'une base. La première est celle que je nomme Main, c'est elle qui déclenche l’exécution des procédures de travail. C'est également elle qui déclenche la transaction (BEGIN TRANSACTION) et sa validation (COMMIT) s'il n'y a pas eu d'erreur dans les autres procédures.
    Dans les autres procédures, toutes les requêtes sont tracées dans une table de suivi de traitement. En cas d'erreur d'une des requêtes, l'annulation de la transaction dans sa globalité est déclenchée (ROLLBACK).

    La procédure Main est appelée via l'agent SQL tous les soirs à 00:01.

    Maintenant, voila mon problème: Le traitement complet dure plus de 3h! Grace à ma table de suivi, j'ai identifier que c'est l'exécution d'un INSERT vers une table temporaire qui prend la quasi-totalité du temps. Ma grande surprise a été de voir que cette même requête ne prenait que 2 min quand je l'exécute via SSMS.
    J'ai alors retiré la transaction des procédures stockées et constaté que le traitement ne dure plus que quelques minutes.

    Est-ce le mécanisme des transactions qui est en cause? Peut être que les tables temporaires et les transactions ne font pas bon ménage (sous SQL Server 2000)?

    Merci d'avance à tous ceux qui pourront éclairer ma lanterne.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Est-ce que si vous remettez la transaction, la durée remonte de nouveau à 3h ?

    Il se peut que lors de vos investigations, vous ayez recréé (ou simplement modifié) la procédure stockée contenant la requête fautive, entrainant la recompilation de celle-ci, avec un nouveau plan d’exécution plus efficace.

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Par défaut
    C'est ce que j'ai fait à l'instant même ! Verdict lundi matin. Je vous ferais savoir ce qu'il en est.

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Par défaut
    Avec la transaction réactivée, le traitement dure plus de 4h
    Une idée les gens?

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Fausse piste donc...

    1/ Quel est le niveau d'isolation des transactions ?
    2/ Y a-t-il d'autres requêtes qui tournent pendant ce traitement ?
    2/ Peut-on voir le code des procédures ?

  6. #6
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Par défaut
    1 - Comment puis-je obtenir cette info?
    2 - J'ai regardé à deux reprises et il n'y a pas de traitement en parallèle
    3 - Vous voulez le code des 5 procédures stockées ou juste le code de l'Insert qui prend du temps?

    Merci

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

Discussions similaires

  1. Calcul de temps dans une requète Access 2003
    Par payou70 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/08/2009, 18h19
  2. Réponses: 3
    Dernier message: 23/05/2009, 13h07
  3. Réponses: 3
    Dernier message: 20/05/2006, 23h28
  4. introduire le temps dans une procedure
    Par florette dans le forum Langage
    Réponses: 4
    Dernier message: 23/04/2006, 17h05
  5. fct pour lire autant de caracteres dans une chaine?
    Par jeanfrancois dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2006, 15h45

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