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

Oracle Discussion :

optimisation de mise a jour


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 62
    Points : 37
    Points
    37
    Par défaut optimisation de mise a jour
    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.

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,
    quelle version d'oracle tu utilises ?

    On peut voir ton code?

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    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).

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Attention aussi aux triggers existants sur la table.

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    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...)

  6. #6
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    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

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 62
    Points : 37
    Points
    37
    Par défaut optimisation de mise à jour
    la requete est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update table1
    set champ5=champ4;
    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

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 62
    Points : 37
    Points
    37
    Par défaut optimisation de mise à jour
    au fait j'ai oublié de vous dire que table1 est indexée sur les trois premiers champs qui sont de type texte.
    merci

  9. #9
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    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

  10. #10
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Il n'y a pas de trigger sur ta table ?

  11. #11
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    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

Discussions similaires

  1. [MySQL] Optimiser la mise à jour de la Base
    Par nguim dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 28/02/2014, 10h55
  2. problème de mise a jour
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 15/04/2004, 17h09
  3. Mise a jour mandrake linux 9.2
    Par Otacan dans le forum Mandriva / Mageia
    Réponses: 2
    Dernier message: 02/04/2004, 23h47
  4. [] [Install] Problème de mise à jour des dll
    Par pepper dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 23/01/2003, 23h34
  5. Visualisation des mise à jour en réseau
    Par fandor7 dans le forum Paradox
    Réponses: 2
    Dernier message: 06/12/2002, 16h54

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