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 :

Le tri de l' insert append ?


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut Le tri de l' insert append ?
    Bonjour
    Le mode direct-path bypasse la mémoire.
    Alors comment et où se fait le tri ? Dans le TEMP ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert /*+ append */ select ...order by...
    Sinon l insert prends toujours 20 min pour s'exécuter avec ou sans append !!!
    Est ce normal ?
    Merci pour votre précision.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Exécutez votre requête avec autotrace et vous allez avoir la réponse concernant le tri. Mais le tri est inutile dans ce cas.
    Le hint Append est ignoré dans certains situations (exemple présence des clés étrangères). Pour une vérification rapide si vous pouvez interroger la table sans faire le commit le hint a été ignoré.

  3. #3
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    C'est uniquement lors de l'écriture que la mémoire est bypassée: écriture directe dans les fichiers, sans passer par le cache.
    Le select lui va lire via le cache (cas du serial direct path read) et trier en utilisant la mémoire de la session.

    Citation Envoyé par mnitu Voir le message
    Mais le tri est inutile dans ce cas.
    Non ! C'est même une très bonne idée de réfléchir au tri des données lorsqu'on charge une table. L'ordre physique va être déterminant pour l'efficacité des accès par index.

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par pachot Voir le message
    C'est même une très bonne idée de réfléchir au tri des données lorsqu'on charge une table. L'ordre physique va être déterminant pour l'efficacité des accès par index.
    Oui c'est vrai. Mais malheureusement cela ne peut être valable que pour un seul index. En effet on ne peut trier une table que d'une seule manière si bien que l'on ne peut pas avoir plusieurs indexes sur la même table avec un bon clustering factor. Il est parfois même possible que le clustering factor d'un index i1(a,b) soit catastrophique alors que celui de l'index i2(a) est très bon.

    Mais, c'est vrai aussi qu'en mode d'insertion conventionnel si vous avez un index i1(a) et un index i2(b) et si vous utilisez insert/select order by a alors l'insertion dans l'index i1 générera moins de logical I/O que celle sur b. Et vice versa si vous inversez l'order by.

    Mais en mode direct path load, les indexes étant maintenus en bulk collect à la fin, l'order by a moins d'éffet sur les logical I/O lors de l'insert.

    Vous trouverez ici un exemple illustrant ce qui précède
    Bien Respectueusement
    www.hourim.wordpress.com

    "Ce qui se conçoit bien s'énonce clairement"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut
    Comment vous expliquer que je gagne rien en temps avec le mode direct-path alors que je vois bien LOAD AS SELECT dans le plan ? Conditions manquantes pour ce mode ?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Une explication possible serait que l'ORDER BY soit beaucoup plus coûteux que le temps l'insertion.
    Que raconte la trace ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Une explication possible serait que l'ORDER BY soit beaucoup plus coûteux que le temps l'insertion.
    Que raconte la trace ?
    Le plan est "presque" le même avec et sans APPEND (avec append le LOAD AS SELECT apparaît dans le plan).
    Je me dis qu'il y a quelque chose qui freine cette technique dans mon cas ????

  8. #8
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Avez vous faite une trace sql étendue ?

Discussions similaires

  1. tri et ré-insertion dans datagrid & dataset
    Par silexxx dans le forum C#
    Réponses: 0
    Dernier message: 19/08/2009, 10h56
  2. Tri automatique à l'insertion des données
    Par olivier39 dans le forum Outils
    Réponses: 2
    Dernier message: 12/09/2007, 16h06
  3. Insert /*+ Append Bypass_recursive_check
    Par olivanto dans le forum Oracle
    Réponses: 2
    Dernier message: 06/02/2007, 15h01
  4. pour Insert Edit et Append
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/06/2005, 11h20
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

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