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 :

Placement des index


Sujet :

Développement SQL Server

  1. #21
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 1 from tempdb..sysobjects where name = '##LOCK_BSI_VALIDATION' and type = 'U'
    a pris 30% des 5 minutes du temps d'execution. Il y en a 2 autres comme ça.

    (##LOCK_BSI_VALIDATION est une table temporaire associée à la connetion sql, créée lors de l'exécution de la procédure, pour éviter que celle-ci s'execute plusieurs fois en même temps et renvoie un message adéquat)

    Ce que je trouve étrange, c'est que parfois, la procédure stockée se termine totalement en moins de 10s, et parfois, il lui faut 5 minutes...

  2. #22
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Citation Envoyé par Monstros Velu Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 1 from tempdb..sysobjects where name = '##LOCK_BSI_VALIDATION' and type = 'U'
    a pris 30% des 5 minutes du temps d'execution. Il y en a 2 autres comme ça.

    (##LOCK_BSI_VALIDATION est une table temporaire associée à la connetion sql, créée lors de l'exécution de la procédure, pour éviter que celle-ci s'execute plusieurs fois en même temps et renvoie un message adéquat)

    Ce que je trouve étrange, c'est que parfois, la procédure stockée se termine totalement en moins de 10s, et parfois, il lui faut 5 minutes...
    Si vous jouez cette requete seule, vous observez le meme comportement ?
    comment est configuré votre tempdb (device, logique, pages ...) ?
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  3. #23
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    La requête seule est quasi-instantanée.

    En dev, tout est sur le même disque dur, DB, log, temp...

    Mon chef de projet vient de me passer un script de nettoyage de la base écrit par mon prédécesseur, peut-être pour ce genre de problème (BSI contient 10 millions de lignes)

  4. #24
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    (##LOCK_BSI_VALIDATION est une table temporaire associée à la connetion sql, créée lors de l'exécution de la procédure, pour éviter que celle-ci s'execute plusieurs fois en même temps et renvoie un message adéquat)
    Et elle sert à quoi plus précisément ? Elle fait combien de lignes (c'est elle qui fait 10 Millions) ?
    Les 30% du temps, c'est une seule occurence de la requête ?
    Vous avez un moyen (commen en Oracle) d'avoir les "wait events" ?

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  5. #25
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Et elle sert à quoi plus précisément ? Elle fait combien de lignes (c'est elle qui fait 10 Millions) ?
    Les 30% du temps, c'est une seule occurence de la requête ?
    Vous avez un moyen (commen en Oracle) d'avoir les "wait events" ?
    Cette table ne contient rien, elle sert juste à vérifier que la requête ne tourne pas déjà. C'est une table temporaire qui dure jusqu'à la fin de la connexion: Au début de la requête, son existence est vérifiée : Si elle existe, on remonte une erreur et on s'arrête, si elle n'existe pas, on la crée et on continue. A la fin de la connexion, elle est détruite, et la boucle suivante (C#) ouvre une nouvelle connectin pour relancer la requête.

    Les 30% du temps, c'est sur une seule occurence. Et je n'a aucune idée de comment voir les "wait events".

  6. #26
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Ca veut donc dire qu'une partie de ton problème de perf n'est pas due à des indexes, des plans d'exécution foireux, ... mais à ?

    Et c'est justement ça le but des wait events chez "nous" :
    Au lieu de se focaliser sur les problématiques d'accès disque ou de plan d'exécution, on se demande "qu'est ce qui a pris du temps".

    Typiquement ici, est-ce un quelconque lock / latch qui fait attendre ?
    Dur de t'en dire plus juste comme ça... (mais tu as peut être un moyen d'approfondir l'analyse ?)

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  7. #27
    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,

    Méfiez-vous de l'utilisation des tables temporaires

    Vous avez tout intérêt à créer de vraies tables dans une base de données autre que les bases de données système

    @++

  8. #28
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    L'historisation et la vidange de la table BSI (9 millions de lignes) ont entrainé la hausse de performance espérée. Je n'ai donc eu qu'à exécuter les scripts déjà existants pour régler ce problème déjà connu par mon prédécesseur sur ce projet, et tout se fait désormais en quelques secondes.

    Merci à tous pour l'aide !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Compteur sur l'utilisation des index
    Par hkhan dans le forum Administration
    Réponses: 11
    Dernier message: 14/10/2004, 17h57
  2. Utilisation des "indexs" ?
    Par vandeyy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 07/09/2004, 07h49
  3. Réponses: 4
    Dernier message: 16/03/2004, 14h16
  4. Placement des balises avec DTD
    Par Keul125 dans le forum Valider
    Réponses: 4
    Dernier message: 28/05/2003, 12h08
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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