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

SQL Oracle Discussion :

supprimer 1 milliard de lignes d'un coup


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut supprimer 1 milliard de lignes d'un coup
    Bonjour a tous,

    J'ai une table d'infos avec plus de 1,5 milliard de lignes
    une primary key dessus
    je dois supprimer toutes les lignes dont la PK est inférieure a une valeur

    pour pas péter le tablespace je procède par bloc de 1 000 000 de lignes avec un commit par bloc => 1mn par bloc => 16 heures au global

    ma question:
    existe une commande (ou ruse) qui permet de supprimer les 1 milliard de lignes d'un coup

    merci de vos suggestions

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Tu dois supprimer quel % de ta table ?
    Si c'est plus de 50 %, c'est peut être mieux de recréer une autre table avec les données à garder.

  3. #3
    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
    la table est-elle partitionnée ?
    comptez-vous vider complètement une ou plusieurs partitions ?

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    merci de vos réponses mais

    1° plusieurs partitions pas obligatoirement totalement vidées
    2° recréer avec les données restantes (500 000 000 lignes) prendrait le même temps je pense

  5. #5
    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
    si des partitions devaient être vidées, le truncate aurait pu être envisagé mais là, c'est mort...

  6. #6
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Par défaut
    Bonsoir,

    J'ai déjà fait une manipulation similaire. J'avais une table partitionnée par hashage, avec 32 partitions. La table faisait 520 Go au total, avec 1,5 milliard de lignes. Cette table avait aussi un index unique de PK, lui aussi partitionné (index local).

    Pour ma part, je ne devais pas supprimer des enregistrements, mais ajouter 3 colonnes à cette table, dont une colonne avec une valeur par défaut. J'avais aussi 2 index locaux à rajouter.

    Je te conseille donc de recréer ta table. Tu aurais pu faire un CTAS (Create Table As Select), mais comme tu as l'air d'avoir peu de place dans ton tablespace, je te conseille de transférer les données partition par partition, en utilisant le Hint APPEND (ce qui minimise l'UNDO) et le parallélisme.

    Comme cela, à chaque fois que tu as traité une partition, tu peux faire un truncate de cette partition sur la table source, histoire de récupérer de la place.

    De plus, tu peux faire ces manipulations en mode NOLOGGING (pour minimiser les REDO). Dans ce cas, mieux vaut planifier une sauvegarde de la base après.

    Au final, sache que ce genre de manipulation est très long. Dans mon cas, la recréation de la table, son chargement partition par partition, la recréation de l'index de PK, la création des 2 nouveaux index, et la génération des statistiques à 10 %, le tout en mode NOLOGGING, +APPEND et avec un DOP (degré de parallélisme) de 4 sur l'insertion sur la partition cible, et un DOP de 4 sur la lecture de la partition source, m'a demandé 6 heures en production.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Supprimer les retours à la ligne
    Par p0Kep0K dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 18/06/2012, 11h54
  2. Réponses: 3
    Dernier message: 08/03/2006, 15h54
  3. [CSV] supprimer les retours à la ligne
    Par illegalsene dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2006, 16h14
  4. Supprimer un saut de ligne
    Par spikto dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2005, 20h54
  5. [RegEx] supprimer les retours à la ligne
    Par illegalsene dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2005, 10h53

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