Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Webi
Webi Forum d'entraide Webi (client léger)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/03/2011, 15h53   #1
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Par défaut Requete assez Longue

Bonjour,

J'ai une requête assez complexe sur un Univers BO qui attaque une base DB2.

Lorsque je lance cette requête via webi (avec un document basique sans mise en forme, juste sous forme d'un tableau) elle tourne indéfiniment.

Lorsque je lance la même requête sql directement à partir d'un éditeur de requête sur la base DB2 j'ai une réponse en moins d'une minute.

Qu'est-ce qui peut bloquer ainsi webi pour ne pas renvoyer de réponse?
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 07h48   #2
Membre du Club
 
Homme
Consultant Décisionnel SAP BO TALEND
Inscription : juillet 2007
Messages : 71
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant Décisionnel SAP BO TALEND
Secteur : Conseil

Informations forums :
Inscription : juillet 2007
Messages : 71
Points : 60
Points : 60
Par défaut sql

Salut

A quoi resseble cette requête outrement longue ?


Tu ne donnes pas du tout d'infos pour qu'on t'aide.
helrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 10h16   #3
Invité régulier
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 7
Points : 7
Bonjour nicoaix,

je ne connais pas bien DB2, d'où cette question : es tu certain d'avoir toutes les lignes de résultat en moins d'une minute ?

Connais tu les index disponibles ?

LC
le.cyberien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h03   #4
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Je veux bien vous donner la requete mais je ne suis pas sur que ça vous parle beaucoup.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
SELECT
  IMAGIN.ITV.NUM_ITV,
  IMAGIN.ITV.NMU_ITV,
  IMAGIN.ITV.PRN_ITV,
  IMAGIN_EXA2.LBM_EXA,
  MIS_X_NGE_TYM.LBM_NGE,
  IMAGIN.LST_DAT.DAT_DEB,
  IMAGIN.ETA.SIG_ETA,
  IMAGIN.ETA.DNC_ETA,
  IMAGIN.MVT_PSOP.INDMNT,
  IMAGIN.MVT_PSOP.DTPAYE,
  MIS_SES_EXA.DAT_SES,
  IMAGIN.MIS.COD_UAD,
  IMAGIN.SPE.LBM_SPE
FROM
  IMAGIN.ITV LEFT OUTER JOIN IMAGIN.ITV_MIS ON (IMAGIN.ITV.NUM_ITV=IMAGIN.ITV_MIS.NUM_ITV)
   INNER JOIN IMAGIN.CNV ON (IMAGIN.CNV.NUM_ITV=IMAGIN.ITV_MIS.NUM_ITV AND IMAGIN.CNV.SER_MIS=IMAGIN.ITV_MIS.SER_MIS)
   INNER JOIN IMAGIN.EFM ON (IMAGIN.EFM.TYP_EFM='R'  AND  IMAGIN.EFM.ID=IMAGIN.CNV.EFMR_FK  AND  IMAGIN.EFM.IND_ANU=0)
   LEFT OUTER JOIN IMAGIN.X_NGE  EFM_X_NGE_SEF ON (IMAGIN.EFM.TYP_EFM='R'  AND  EFM_X_NGE_SEF.TYP_NGE='SEF'  AND  IMAGIN.EFM.IND_TRT=EFM_X_NGE_SEF.COD_NGE  AND  IMAGIN.EFM.IND_ANU=0)
   INNER JOIN IMAGIN.MVT_PSOP ON (IMAGIN.EFM.TYP_EFM='R'  AND  IMAGIN.MVT_PSOP.EFM_FK=IMAGIN.EFM.ID  AND  IMAGIN.EFM.IND_ANU=0)
   FULL OUTER JOIN IMAGIN.MIS ON (IMAGIN.ITV_MIS.SER_MIS=IMAGIN.MIS.SER_MIS)
   FULL OUTER JOIN IMAGIN.ETA ON (IMAGIN.MIS.COD_ETA=IMAGIN.ETA.COD_ETA)
   LEFT OUTER JOIN IMAGIN.SPE ON (IMAGIN.SPE.COD_UAD=IMAGIN.MIS.COD_UAD  AND  IMAGIN.SPE.COD_EXA=IMAGIN.MIS.COD_EXA  AND  IMAGIN.SPE.COD_VER=IMAGIN.MIS.COD_VER  AND  IMAGIN.SPE.COD_SPE=IMAGIN.MIS.COD_SPE)
   LEFT OUTER JOIN IMAGIN.LST_DAT ON (IMAGIN.MIS.CLE_DAT=IMAGIN.LST_DAT.CLE_DAT)
   INNER JOIN IMAGIN.EXA  IMAGIN_EXA2 ON (IMAGIN_EXA2.COD_EXA=IMAGIN.MIS.COD_EXA)
   INNER JOIN IMAGIN.SES_EXA  MIS_SES_EXA ON (IMAGIN.MIS.COD_SES=MIS_SES_EXA.COD_SES)
   INNER JOIN IMAGIN.X_NGE  MIS_X_NGE_TYM ON (MIS_X_NGE_TYM.TYP_NGE='TYM'
  AND  MIS_X_NGE_TYM.COD_NGE=IMAGIN.MIS.TYP_MIS)
 
WHERE
  (
   IMAGIN.ITV.NMU_ITV  =  'DURAND'
   AND
   EFM_X_NGE_SEF.LBM_NGE  =  'Accepté'
  )
D'après les premiers éléments de l'enquete, dans la clause where le champ NMU_ITV est le nom de famille. Avec 'Durand' j'ai un temps de réponses de ma requete de 12 minutes, et avec 'Laurent' j'ai un temps de réponse de 1 seconde. Pour info il y a 180 Durand et 172 Laurent dans la table ITV.

Apparemment ce qui pose problème c'est le champ IMAGIN.ETA.SIG_ETA ou la jointure sur laquelle il s'appuie FULL OUTER JOIN IMAGIN.ETA ON (IMAGIN.MIS.COD_ETA=IMAGIN.ETA.COD_ETA)

En effet si j'arrete le select avant le champ IMAGIN.ETA.SIG_ETA la requete avec 'Durand' prend moins d'une seconde.
Code :
1
2
3
4
5
6
7
SELECT
  IMAGIN.ITV.NUM_ITV,
  IMAGIN.ITV.NMU_ITV,
  IMAGIN.ITV.PRN_ITV,
  IMAGIN_EXA2.LBM_EXA,
  MIS_X_NGE_TYM.LBM_NGE,
  IMAGIN.LST_DAT.DAT_DEB
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h24   #5
Modérateur
 
Avatar de Julien59
 
Julien Lizzul
Inscription : mars 2008
Messages : 1 103
Détails du profil
Informations personnelles :
Nom : Julien Lizzul
Âge : 25
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 1 103
Points : 1 295
Points : 1 295
Bonjour,

Je pense qu'il s'agit ici d'optimisation de requête.
As-tu envoyé cette requête à tes DBA pour qu'ils puissent l'analyser ?
As-tu lancé un plan d'exécution dessus ?
__________________
  • Pensez à consulter la FAQ BO
  • Quand votre problème est solutionné, n'oubliez pas de cliquer sur le bouton
Julien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h27   #6
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Le probleme c'est que mon dba ne souhaites pas m'aider à résoudre ce pb...faut que je me débrouille tout seul.
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h43   #7
Modérateur
 
Avatar de Julien59
 
Julien Lizzul
Inscription : mars 2008
Messages : 1 103
Détails du profil
Informations personnelles :
Nom : Julien Lizzul
Âge : 25
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 1 103
Points : 1 295
Points : 1 295
Ok... Sympa les dba ! L'esprit d'équipe, ils connaissent pas
j'avoue ne pas être chaud pour analyser ton SQL dans l'immédiat, par contre, si tu as un modèle de données, genre un bout d'univers qui correspondrait à tes jointures (avec les cardinalités), je pourrais jeter un coup d'oeil plus rapidement.
En parallèle, essaye de poster ton code SQL dans le forum adéquat en expliquant bien ton problème et en mettant un titre explicite
A froid comme ca, je n'aime pas tous tes full outer join et left outer join. C'est pour ca que je voudrais voir le modèle pour analyser plus rapidement.
__________________
  • Pensez à consulter la FAQ BO
  • Quand votre problème est solutionné, n'oubliez pas de cliquer sur le bouton
Julien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h46   #8
Invité régulier
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 7
Points : 7
Citation:
Envoyé par nicoaix Voir le message
Le probleme c'est que mon dba ne souhaites pas m'aider à résoudre ce pb...faut que je me débrouille tout seul.
Sympa le dba, alors il ne faut pas qu'on t'aide ?

Le pb n'est peut être pas dû à la jointure avec ETA mais à une des autres jointures "OUTER". Si une de ces liaisons te ramène 50 records, ça peut créé des soucis avec ETA. Il te faudrait c'est vrai, un plan d'exécution pour y voir plus clair mais ce ne sera plus dans mes compétences.

LC
le.cyberien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 18h29   #9
Membre du Club
 
Homme
Consultant Décisionnel SAP BO TALEND
Inscription : juillet 2007
Messages : 71
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant Décisionnel SAP BO TALEND
Secteur : Conseil

Informations forums :
Inscription : juillet 2007
Messages : 71
Points : 60
Points : 60
Par défaut dba..pas sympa

Hello
Depuis que je travaille, je ne suis jamais tombé sur un DBA sympa. Franchement, si tu ne maitrises pas tout le modèle de données.

Je trouve que combiner INNER JOIN + FULL OUTER JOIN + LEFT OUTER JOIN c'est mortel.
Perso fait toi aider par des gens qui connaissent les données. Ya certainement plus simple à faire.

De plus il parait que faire les jointures suivant l'autre methode, ça consomme bcp moins jointures dans le WHERE).

pour 8 millions de lignes dans 3 tables avec LEFT, INNER ça met trois plombes. Les jointures dans la clause Where ça y va sous 3 min (ORA10)

Bo courage
helrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h08.


 
 
 
 
Partenaires

Hébergement Web