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

PL/SQL Oracle Discussion :

Optimisation écriture fichier


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut Optimisation écriture fichier
    Bonjour,

    J'utilise ORACLE 11, j'ai une procédure stockée qui écrit dans un fichier. A l'heure actuelle, j'écris en utilisant UTL_FILE.PUT_LINE avec un buffer de 32k (qui est le max autorisé). J'ai beaucoup de volume à écrire (dans les 50 mo). Y-a-t-il un moyen d'écrire avec un plus gros buffer en utilisant autre chose que UTL_FILE.PUT_LINE ? Ou connaissez vous d'autre moyen d'optimiser l'écriture sur fichier en PLSQL ?

    Merci pour vos réponses

    Jacques

  2. #2
    Expert confirmé 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
    Par défaut
    D'abord ça dépend de votre algorithme, est-il optimisé ?

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut
    J'ai une procédure principale de parcours d'une table et une sous procédure qui écrit par bloc de 32k.

    En terme d'optimisation, pour l'instant je fais en sorte de faire une seule ouverture / fermeture de fichier et de passer le même pointeur pour tous les appels de la sous procédure d'écriture. Je fais aussi en sorte de remplir le plus possible mon buffer avant de le flusher dans le fichier disque (c'est du xml je fais aussi en sorte de pas couper la ligne à l'intérieur d'une balise).

    La sous procédure d'écriture est donc appelée environs 1600 fois pour un fichier de 50mo. C'est l'option "petit buffer, beaucoup d'appel à la sous procédure".

    Ca m'a pu plus performant que de tout charger dans une variable clob et de faire un seul appel à une procédure d'écriture qui elle découperait le clob par bloc de 32k et ferait ses écritures, option "gros buffer, 1 seul appel à la sous procédure".

    Mais j'avoue de ne pas être vraiment sûr que ce soit plus performant, peut-être qu'une solution intermédiaire sera à étudier, vos avis ?

  4. #4
    Expert confirmé 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
    Par défaut
    Si chaque appel de la procédure UTL_FILE.PUT se fait avec un buffer rempli de 32K c’est OK.

  5. #5
    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
    Comment est géré le buffer de 32K dans la procédure : Un clob ?
    J'ai réduit un traitement de 1h à 5mn en changeant des || du clob par des affectations dans un varchar et en || au clob une seule fois à la fin de chaque petit traitement.

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut
    J'ai améliorer mes perfs en utilisant notamment une fonction qui écrit d'un coup le contenu d'un clob dans un fichier.

    cf http://www.oracle-developer.net/display.php?id=425

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

Discussions similaires

  1. écriture fichier properties
    Par touriste44 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 20/05/2010, 13h26
  2. Optimiser traitement fichier [.txt]
    Par Metallic-84s dans le forum Langage
    Réponses: 14
    Dernier message: 16/03/2006, 13h33
  3. [C#] écriture fichier .txt + calcul écart-type
    Par titaB dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/05/2005, 13h09
  4. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17
  5. Ouverture/écriture fichier Excel
    Par mathieu04 dans le forum Windows
    Réponses: 17
    Dernier message: 07/06/2004, 11h23

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