|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 5 ![]() |
Bonjour,
J'utilise un programme java qui accède à une base Oracle via jdbc. Mon but est d'insérer 7 millions de records dans ma base le plus vite possible. Pour à peu près les 60 premiers milliers d'insertions cela va très vite (10'000 insertions en 20 sec) puis cela ralentit violemment ensuite. A savoir que mon programme java exécute un update et un select de temps en temps en plus des inserts. Ma première question est qu'est-ce que je peux faire pour aller plus vite quitte à ce qu'Oracle utilise ttes les capacités de la machine? Est-ce que vous avez des combines? Deuxièmement et juste pour info, est-ce qu'il serait possible que Oracle stock en mémoire les premiers milliers de requêtes ou est-ce que l'énorme ralentissement serait juste du à l'augmentation du nombre de records dans la base? Merci d'avance! |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : décembre 2005 Messages : 76 ![]() |
Si j'ai bien compris, le traitement que ton programme java fait n'est pas uniquement un chargement de record, il test avant de charger .Donc c'est une sorte de mise à niveau de ta base par rapport à une autre base selon une certain politique
Si c’est le cas il faut donnée un maximum de détails sur ce traitement pour conclure si il y a une possibilité pour l'optimisé. |
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() ![]() Inscription : décembre 2003 Messages : 480 ![]() |
et redo logs ? ils ont quelles tailles ? ils sont sur quels disques ? es-tu en mode archivelog ? si oui, sur quels disques ? les mêmes que les redo ? et le datafile auquel appartient la table ?
tu fais un commit tous les combien ? aussi pourquoi charger autant de records via une connexion javajdbc ? pourquoi pas sqlloader en direct mode ? quels sont tes select exécutés lors du chargement ? pourquoi ne pas utiliser du BULK processing via le pl/sql et puis surtout , tu veux que cela soit réalisé en combien de temps ? et en combien de temps cela est-il réalisé aujourd'hui ???
__________________
*** OPN Exadata Specialist *** *** OCE Performance Tuning 11g *** *** OCE Rac 10g *** *** OCP DBA 9i-10g-11g *** |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 5 ![]() |
Merci de vos réactions rapides!
C'est vrai que j'ai été un peu vague sur le fonctionnement de mon applic. En gros elle reçoit en input un fichier qu'elle analyse et insert les données dans la base oracle. Selon sur quoi elle tombe elle peut aussi aller modifier des records existants. Il y a vraiment une étape d'analyse et c'est donc pour cette raison que je ne charge pas la base d'une autre facon. En ce qui concerne les redo log, ils ont une taille d'enregistrement de 72 et je n'ai aucune idée sur quel disque ils sont... Comment tu vois ca? Je ne suis pas en mode archivelog. Pour les commits, mon programme java lançait un commit tous les 20'000 insertions. Puis je l'ai enlevé pour voir et cela ne changeait rien sur le temps d'exécution... Est-ce qu'il y a moyen de mettre un auto-commit dans Oracle Enterprise manager? Est-ce que ca vaudra le coup? Pour te donner un ordre d'idée du temps nécessaire, pour un million d'insertion ca m'a pris environ 24 heures et j'en ai 7 millions à insérer... En sachant que plus ca avance et plus ca ralentit ca doit bien prendre plus que 7 jours... Je sais que ce n'est pas du coté de java que ca traine car en utilisant une base Access cela va nettement plus vite et j'arrive à environ 1000 insertions en 4 secondes et sans aucun ralentissement à mesure que la base se remplit... Le but serait de réduire le temps nécessaire à un ou deux jours max si c'est possible... N'hésitez pas si vous avez d'autres questions... |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Vérifie si c'est pas ta table d'insertion qui fait des extends.
Quelle est sa caractéristique (taille, initial, next). Pas de trigger dessus ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Pour les redo :
Pour 7M d'enreg, mieux vaut mettre des commit intermédiaires.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
sans les waits générés pendant la session ça va être compliqué de savoir d'où ça vient
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 5 ![]() |
je sais pas si ma table d'insertion fait des extends, voila ses caractéristiques:
taille initiale: 64 KO taille suivante: 0 KO Augmenter la taille de 0% Il y a un trigger dessus pour utiliser une séquence afin d'incrémenter ma clé primaire (puisqu'il n'y a pas d'auto-increment), c'est tout. Des commits intermédiaires d'accord, mais tous les 10'000, 100'000, 1'000'000? |
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
|
|
|
00
|
|
|
#11 | |||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Citation:
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
|||
|
|
00
|
|
|
#12 | ||
|
Membre expérimenté
![]() ![]() Inscription : décembre 2003 Messages : 480 ![]() |
vérifie si le tablespace dans lequel la table est créée est bien LMT et ASSM
Code :
néanmoins, il semble opportun commele précisait orafrance de nous envoyer un trace de ta session lorsqu'elle exécute ta procédure il y a trop de possibilités (pblm des redo trop petis sur même disque que TEMP par exemple, pblm de PGA, pblm d'UNDO qui ne grandit pas assez vite ...)
__________________
*** OPN Exadata Specialist *** *** OCE Performance Tuning 11g *** *** OCE Rac 10g *** *** OCP DBA 9i-10g-11g *** |
||
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Pour vérifier la gestion des extents il faut utiliser DBA_TABLESPACES.EXTENT_MANAGEMENT:
Citation:
|
|
|
|
00
|
|
|
#14 | |
|
Membre expérimenté
![]() ![]() Inscription : décembre 2005 Messages : 541 ![]() |
Citation:
Verifier que: 1) le trigger est absolument necessaire pour recuperer la valeur de cle 2) sinon, que la sequence a ete creee avec un CACHE significatif. |
|
|
|
00
|
|
|
#15 | |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 5 ![]() |
Citation:
En tout cas merci à tous pour votre coup de main! |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com