Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1127 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pbs de perfs d'un serveur oracle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pbs de perfs d'un serveur oracle

n°644261
manuhard
Le bois ne rend pas les coups
Posté le 16-02-2004 à 17:39:57  profilanswer
 

J'ai un problème de performance avec une requête SQL.
Je dispose du cas concret suivant :
 
- Sur un serveur de développement, une requête met 5 mn.
(date d'achat du serveur : décembre 2003)
 
- Sur un serveur de production, cette même requête met 45 mn.  
(date d'achat du serveur : juin 2002)
 
La capacité en RAM est identique (1 GO)
Le CPU et les disques sont plus performants.
 
 
Comment "tester" les performances d'un serveur Oracle, ainsi que les flux d'entrée-sortie ?
Je suppose en effet qu'un serveur plus performant permet d'améliorer les temps d'exécution d'une requête, mais ici on a un facteur 9 (on passe de 5 mn.... à 45 mn).
 
C'est la première chose que je voulais tester, avant les paramètres Oracle.
 
 
Merci d'avance.


Message édité par manuhard le 16-02-2004 à 17:54:38
mood
Publicité
Posté le 16-02-2004 à 17:39:57  profilanswer
 

n°644288
ajnag
where no man has gone before
Posté le 16-02-2004 à 17:51:33  profilanswer
 

tu peux detailler tes configs stp ?
 
il fait autre chose que de l'oracle ton serveur de prod ?
 
tu tournes en quel version d'oracle ?
 
de 5 a 45 ça fait facteur 9 :o


---------------
Chasser sans bière c'est comme... pêcher sans bière.
n°644984
MagicBuzz
Posté le 17-02-2004 à 09:59:55  profilanswer
 

T'as vérifié que t'avais bien des index correctement créés et à jour ?
 
Deplus, c'est quoi la charge et la volumétrie ? Parceque si c'est pas identique, c'est normal que tu aies des différences.
 
Peux-tu poster ta requête qu'on voit à quoi elle ressemble ? Parceque pour que ce soit aussi lent, soit tu tapes dans 500 tables de 100 Go chacune, soit elle est écrite comme un sagouin... (soit t'as pas d'index évidement)


Message édité par MagicBuzz le 17-02-2004 à 10:00:09
n°646027
manuhard
Le bois ne rend pas les coups
Posté le 17-02-2004 à 20:56:54  profilanswer
 

J'utilise Oracle 8.1.7.
 
Les données de dev et de prod sont les mêmes.
 
Mes serveurs sont des serveurs servant uniquement pour Oracle.
 
Les index sont correctement creés et à jour.
 
La requête est composée de 2 parties : les 2 parties prises indépendemment sont rapides, mais j'ai un NOT IN (2 sous-requêtes donc), qui consomme énormément de CPU.

n°646079
ajnag
where no man has gone before
Posté le 17-02-2004 à 22:15:13  profilanswer
 

ton CBO est a jour sur les 2 ?

n°646095
manuhard
Le bois ne rend pas les coups
Posté le 17-02-2004 à 22:34:13  profilanswer
 

Comment voir si le cost based optimizer est à jour ?

n°646104
Taz
bisounours-codeur
Posté le 17-02-2004 à 22:38:50  profilanswer
 

on veut voir les requetes :o et des infos sur la charge et la volumétrie. parce que 45minutes, c'est une sacré pause café :D

n°646437
ajnag
where no man has gone before
Posté le 18-02-2004 à 08:26:59  profilanswer
 

manuhard a écrit :

Comment voir si le cost based optimizer est à jour ?


 

Code :
  1. SELECT distinct last_analyzed from dba_objects;


Message édité par ajnag le 18-02-2004 à 08:27:19
n°646626
MagicBuzz
Posté le 18-02-2004 à 10:46:58  profilanswer
 

Sinon, je le dirai jamais assez mais... Si y'a moyen d'éviter le NOT IN, bah... Voilà :)

n°646754
ajnag
where no man has gone before
Posté le 18-02-2004 à 11:24:53  profilanswer
 

MagicBuzz a écrit :

Sinon, je le dirai jamais assez mais... Si y'a moyen d'éviter le NOT IN, bah... Voilà :)


 
+1


---------------
Chasser sans bière c'est comme... pêcher sans bière.
mood
Publicité
Posté le 18-02-2004 à 11:24:53  profilanswer
 

n°647534
manuhard
Le bois ne rend pas les coups
Posté le 18-02-2004 à 17:32:18  profilanswer
 

J'ai eu une idée :  
les 2 sous-requêtes sont vraiment merdiques.
Je vais mettre leur contenu dans des tables, et faire un select sur ces tables.

n°647539
MagicBuzz
Posté le 18-02-2004 à 17:36:19  profilanswer
 

tu peux poster ta requête qu'on voit ça ?

n°647544
manuhard
Le bois ne rend pas les coups
Posté le 18-02-2004 à 17:40:20  profilanswer
 

J'ai déjà fait un post presque similaire, mais je la remets :
 
(Oracle a des problèmes avec le plan d'exécution)
 
SELECT DISTINCT adhe_no_bull, Cour_dat_eff,
Cour_nom_adhes,cour_cod_prod,cour_cod_part,  
cour_cod_aven, DOCUMENTS.*
FROM   COURRIERS, DOCUMENTS, Adhesions, adherents
WHERE  DOCU_CODE = COUR_COD_AVEN
AND    DOCU_TYPE = COUR_COD_PROD
AND    COUR_COD_PROD =72
AND    COUR_COD_AVEN ='GAIN'
and    ADHE_NO_ADHES = COUR_NO_ADHES
and    adhe_no_adher = adhr_no_adher
and    adhr_dat_deces is null
and    (adhe_dat_cpta is not Null)
and    ((adhe_flg_transfert = 0 ) or (adhe_flg_transfert = 1 and adhe_cont_recep is not null))
and adhe_no_bull NOT IN ( select adhe_no_bull from adhesions, evenements
                          where adhe_cod_prod = even_cod_prod
                          and adhe_no_adhes = even_no_adhes
                          and adhe_cod_prod =72
                          and ( (adhe_dat_cpta is Null )
                                or (adhe_flg_transfert = 1 and adhe_cont_recep is null)
                                or even_dat_val is null)
                          and (adhe_cod_etat is null or not adhe_cod_etat in ('AL','A3'))
                          )


Message édité par manuhard le 18-02-2004 à 17:40:55
n°647561
MagicBuzz
Posté le 18-02-2004 à 17:52:04  profilanswer
 

c'est pas le post où je t'avais réécrit la requête sans le not in ? il me semble la reconnaître :heink:

n°647563
MagicBuzz
Posté le 18-02-2004 à 17:53:45  profilanswer
 

parceque pour info, t'as deux trucs affreux dans ta requête, qui expliquent les mauvaises perfs :
-> NOT IN (surtout qu'il est superflu, avec un not exists mieu écrit, tu gagnes à la fois parceque not exists est plus rapide et parceque la sous-requête que je t'ai filé est mieu écrite)
-> DISTINCT qui est une usine à gaz dès que tu as pas mal de colonnes (ce qui est le cas) et beaucoup de ligne (ça je sais pas)

n°647568
manuhard
Le bois ne rend pas les coups
Posté le 18-02-2004 à 17:56:55  profilanswer
 

C'était celle là en effet !
 
Bon je la réécris.... mais j'avais eu du mal avec l'explication du post précédent.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pbs de perfs d'un serveur oracle

 

Sujets relatifs
SQL serveur changer le propriétaire de la BDPb appel procédure stockée oracle
[JAVA] Interroger un serveur pour avoir ses caractéristiques technique[ORACLE FORMS] validité d'une variable globale ? [Résolu]
Nouveauté oracle 9Tomcat, serveur web inaccessible
arcitecture client/serveur sous linux[C++ Builder] serveur web
tuto pro*c oracletutorial pro*c / oracle
Plus de sujets relatifs à : Pbs de perfs d'un serveur oracle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR