|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 62 ![]() |
bonjour;
j'ai un petit souçis avec la mise sur mes tables oracle; lorsque je lance la mise à jour d'un seul champ d'une meme table ; j'ai plus de deux heures de temps pour mettre à jour 5millions de lignes , ya til quelque chose à faire pour parer à ce problème??merci d'avance. |
|
|
00
|
|
|
#2 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
quelle version d'oracle tu utilises ? On peut voir ton code? |
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
S'il y a des indexes tu peux essayer de les supprimer et les recréer après, idem pour les contraintes sur la colonne (une désactivation suffit).
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Attention aussi aux triggers existants sur la table.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Surtout, il faut en savoir un peu plus sur ce que tu entends par "mise à jour". C'est un update ? si oui, quelle est la requête. On fait souvent fausse route en pensant que le problème vient de la mise à jour à proprement parler alors que le soucis viens du "select" implicite qui permet d'atteindre les lignes à mettre à jour.
Il faut donc connaitre: - La (ou les) requetes de mises à jours - Les volumes (en gros) des tables concernées par les requêtes de mises à jour - Les indexes présents dans ces tables - autres particularités (comme les triggers, clef étrangères etc...) |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Tout a fait d'accord avec McM et remi4444 et donc pour être sur de rien avoir oublié le plus simple et de mettre la session qui fait la mise a jour en mode trace et de faire un petit tkprof qui te fera directement remonter le coupable.
Ça évite bien souvent de perdre du temps à optimiser une requête alors que c'est sa copine qui ralentie tout |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 62 ![]() |
la requete est la suivante:
sachant que la table table1 contient: champ1, champ2,champ3,champ4,champ5; et le champ4 et de meme type que la champ5 et table1 contient plus de 5 millions d'enregistrements; merci |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 62 ![]() |
au fait j'ai oublié de vous dire que table1 est indexée sur les trois premiers champs qui sont de type texte.
merci |
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Vu que ta requete n'a aucune condition y pas grand chose a faire de ce coté la. Tu mets a jours les 5 Millions de ligne un point c'est tout. Avec toujours le risque d'effet de bord puisque tu n'as pas fait de tkrof.
Apres il faut voir au niveau global ce qui ralentit ta requete. Encore une fois la meilleurs (la seule) solution est de faire une trace avec les "Wait Events" pour savoir ce qui te ralentit |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Il n'y a pas de trigger sur ta table ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
de toute façon, sans une trace convenable avec les waits j'vois pas ce qu'on peut faire
ça peut venir des rollbacks ou plus probablement des redos (log_buffer ou taille des redos)... le jeu des devinettes continue
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com