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 :

Le Group by n'arrête pas de faire des recompile [2014]


Sujet :

MS SQL Server

  1. #1
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut Le Group by n'arrête pas de faire des recompile
    Hello a Tous

    J'ai un cas jamais vu pour le moment, j'ai dans ma console un Exces de recompilation automatique qui se fait

    apres analyse c'est cette PS qui pose Probleme ci dessou

    Je me suis apercu qu'en enlevant le GROUP BY (en gras)dans la PS, cela ne recompile plus du tout

    Avez vous deja eu le cas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ALTER procedure [dbo].[PS_GEN_ADD_BOITIER_ZONE_BZO]
    with recompile
    as
    declare @DT_CREATE datetime
    set @DT_CREATE = GETUTCDATE()
    
    
    insert into	dbo.T_BOITIER
    			(BZO_ID, NUM_ORDER, DT_CREATE, IS_DELETE,
    			BOI_ID, YBR_ID, BZO_LIB, BZO_DATA, BZO_IS_ALERT, BZO_IS_PAYS)
    select		t.BZO_ID, isnull(dm.NUM_ORDER, 0) + 1, @DT_CREATE, 0,
    			t.BOI_ID, t.YBR_ID, t.BZO_LIB, t.BZO_DATA, t.BZO_IS_ALERT, t.BZO_IS_PAYS
    from		#BOITIER t
    left join	(
    			select		BZO_ID, max(NUM_ORDER) as NUM_ORDER
    			from		dbo.T_BOITIER_ZONE_BZO_DETAIL
    		group by (BZO_ID) 
    		
    			) dm
    			
    on			dm.BZO_ID = t.BZO_ID

  2. #2
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    il faut enlever tout simplement l'option

  3. #3
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    malheuresement c'est la premiere chose que j'ai regarde pas de recompile dans la PS

  4. #4
    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
    Citation Envoyé par olivtone Voir le message
    malheuresement c'est la premiere chose que j'ai regarde pas de recompile dans la PS
    Pourtant c'est bien ce qui est exposé dans le code de ta procédure que tu as posté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER procedure [dbo].[PS_GEN_ADD_BOITIER_ZONE_BZO]
    with recompile
     
    ...
    Ceci dit pour connaître la cause de ta recompilation tu peux mettre en place une trace profiler avec l'événement SP:Recompile qui te donnera plus d'information sur la cause de ta recompilation.
    Tiens nous au courant

    ++

  5. #5
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    desole un mauvais copier coller dans le texte parce que j'ai fait beaucoup de Test

    le recompile me sort la requete qui pose probleme

    j'ai dans l'eventSubclass =>1 schema changed.

    j'ai regarde un peu sur cet article :

    http://blog.sqlauthority.com/2010/02...rmance-tuning/

    mais je ne suis pas concerne par ces cas la

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Question bête, tes statistiques sont-elle a jour ?
    MCSA SQL SERVER |MCT | MVP Data Platform

  7. #7
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par olivtone Voir le message
    j'ai regarde un peu sur cet article :

    http://blog.sqlauthority.com/2010/02...rmance-tuning/

    mais je ne suis pas concerne par ces cas la
    Vraiment ? même par le dernier, à savoir la table temporaire ?

    Vous en avez pourtant bien une dans votre SP, où et comment est-elle créée et peuplée ?
    Elle pourrait être la cause de vos recompilations.

  8. #8
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    desole vraiment fatigué

    en fait cette PS1 est appele par une PS0 en amont ou la creation d'une table temporaire se fait dans la PS0

    LA creation de la table temporaire dans une autre PS peut causer ce grand nombre de recompilation ?

    Les Stats sont a jour sur la table, c'est la premiere que j'ai regarde

  9. #9
    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
    Citation Envoyé par olivtone Voir le message
    desole vraiment fatigué

    en fait cette PS1 est appele par une PS0 en amont ou la creation d'une table temporaire se fait dans la PS0

    LA creation de la table temporaire dans une autre PS peut causer ce grand nombre de recompilation ?

    Les Stats sont a jour sur la table, c'est la premiere que j'ai regarde

    Oui la création d'une table qu'elle soit permanente ou non dans une procédure déclenchera une compilation de la procédure. (d'où l'événement associé que tu as "schema change")

    ++

  10. #10
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    d'accord...

    meme si on integre la creation de la table temporaire et le drop dans la meme procedure?

    est ce aussi le cas pour une table variable?

    j'aurai bien teste mais je suis pas au taf

    Merci a vous en tout cas top ce forum !!!

  11. #11
    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
    Citation Envoyé par olivtone Voir le message
    d'accord...

    meme si on integre la creation de la table temporaire et le drop dans la meme procedure?

    est ce aussi le cas pour une table variable?

    j'aurai bien teste mais je suis pas au taf

    Merci a vous en tout cas top ce forum !!!
    Si ta procédure PS1 ne fait pas référence à ta table temporaire créée dans PS0 alors pas de problème de recompilation.
    En revanche dans PS0 ton plan d'exécution est partiellement compilé (le create table et insert si tu utilises qui concernent ta table temporaire seront compilés à l'exécution)

    Pas de souci pour les variables de tables pour lesquelles aucune statistique est maintenue et donc n'implique aucune recompilation
    Il y a cependant une variante si on utilise le nouveau traceflag 2534

    ++

  12. #12
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    Je récapitule:

    Une PS0 a crée sa table temporaire, et lance la PS1 avec cette table temporaire crée, cette meme table temporaire etait appelé dans une autre PS, qu'on va appeler PS2

    Du coup j'ai rassemblé les 3 PS en Une, et du coup cela ne recompile plus...

    Merci a Tous en tout cas vraiment top

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/04/2014, 09h34
  2. [FLASH MX2004] Clip qui ne s'arrête pas
    Par romain starck dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 10/05/2006, 19h43
  3. Je n'arrive pas à faire des boucles dans un répertoire
    Par padodanle51 dans le forum Linux
    Réponses: 4
    Dernier message: 04/05/2006, 18h04
  4. Impact de balles, trace de pas... Comment faire???
    Par supergrey dans le forum DirectX
    Réponses: 1
    Dernier message: 15/07/2004, 13h46
  5. Selection de Groupes ki ne sont pas sous groupes...
    Par superdada dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/07/2003, 14h42

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