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 :

Delete de masse


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut Delete de masse
    Bonjour à tous,

    Je suis dans un code JAVA et j'effectue des suppressions qui peuvent être dans certains cas, massives, c'est-à-dire environ 500 000 enregistrements.

    De plus pour connaître les éléments à supprimer je fais une liaison de toutes les clés primaire dans une table temporaire.

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DELETE FROM 
    (SELECT A.SOURCE FROM ARTICLE A, TMP_BATCH_EXTRACTION B 
    WHERE A.SOURCE=B.ID)
    ou
    DELETE FROM ARTICLE 
    WHERE ID IN (SELECT ID FROM TMP_BATCH_EXTRACTION)
    Le problème arrive lorsqu'il y a plus de 200 000 enregistrements çà devient extrèmement long (~10mn).
    J'ai essayé de découper les requêtes de suppression en faisant ROWNUM < 100 000 mais cela n'a pas l'air de changer grand chose (j'ai cru).

    Alors avez-vous une idée pour pouvoir supprimer des enregistrements en masse ?

    En vous remerciant d'avance.

    Cordialement
    Boutss

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Je l'avais déjà lu, merci.
    Mais je ne souhaiterai pas modifier la structure des tables. Du moins, le moins possible, car j'arrive sur le projet et je ne connais pas toutes les contraintes.

    Je me demandais s'il y avait un moyen de réduire les coûts surtout qu'au départ çà semble ne pas être gourmand un delete ?? à cause des rollbacks segments ?

  4. #4
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Oui tu as bien saisi le problème, c'est malheureux mais un delete est plus long qu'un insert, c'est d'ailleurs le gros défaut du système des rollback-segments. Il faut comprendre que Oracle copie les anciens blocs dans ses segments de rollback avant de les modifier les blocs principaux. Lors d'un insert, il n'y a rien dans les anciens blocs, donc rien à sauvegarder (je résume un peu...) alors que dans un delete, il y a des beaucoup de données à copier. Un delete est donc beaucoup plus couteux...

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Merci Remi de confirmer !!

    Y'a-t'il un moyen de désactiver l'utilisation de ces rollbacks segments ? qui empècherai forcément le rollback.

    Et est-ce que cela servirait à quelque chose ?

    Merci

    Ps: à savoir que je commande depuis du code JAVA donc désactivation depuis les API java si possible en Oracle.

  6. #6
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    vous ne voulez pas modifier la base mais vous voulez modifier le fonctionnement d'Oracle ???

    non, vraiment, je crois que vous ne cherchez pas dans la bonne direction...

Discussions similaires

  1. [2008R2] Réduction automatique du journal suite delete en masse
    Par castorameur dans le forum Administration
    Réponses: 5
    Dernier message: 21/01/2015, 13h36
  2. Delete de masse (suite)
    Par boutss dans le forum SQL
    Réponses: 34
    Dernier message: 14/12/2010, 09h14
  3. commit régulier avec un delete en masse
    Par kalyparker dans le forum Oracle
    Réponses: 18
    Dernier message: 16/01/2007, 11h17
  4. Réponses: 4
    Dernier message: 09/12/2005, 17h40
  5. Delete de masse
    Par genio dans le forum Oracle
    Réponses: 5
    Dernier message: 09/12/2005, 16h30

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