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

SGBD Perl Discussion :

paralélisation de programmes


Sujet :

SGBD Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Par défaut paralélisation de programmes
    Bonjour,

    Mon programme PERL fais une tres grande nombre d'insertions dans la base Oracle. Je risque de passer 30 heures à attendre...

    En un mot:
    - mon programme perl reçoit un fichier d'entrée avec beaucoup de données, les traite puis prépare les requetes SQL pour les mettre ensuite dans un fichier de sortie
    - SQLLOADER charge ces données

    ce que je vois comme solution, c'est couper ce fichier d'entrée en plusieurs petits fichiers , ça ira plus vite.
    - Première question: connaissez vous d'autres méthodes pour résoudre ?

    Avec ma solution, le soucis c'est que j'aurai des problèmes de gestion de clé primaire de la base, car SQLLOADER ne peut pas gérer la clé primaire (incrémenter d'une manière automatique). Il faut que je fasse par PERL l'incrémentation. Or comme j'ai plusieurs fichiers d'entrée et donc plusieurs programmes perl tournent en même temps, je ne vois pas comment gérer cette clé.

    que pensez vous ?

    existe il des threads qui peuvent résoudre ce problème en perl ?

    meri d'avance

    Cathy

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Déjà, je me demande si utiliser DBI et DBD::Oracle ne serait pas plus rapide, en particulier utiliser des requêtes avec placeholders de façon à avoir les requêtes en cache. Ensuite je te recommande d'oublier les threads en Perl, la situation s'est beaucoup amélioré, mais je ne leur ferais encore pas trop confiance pour des scripts en productions. Ce qui signifie des forks, avec une mémoire partagée pour la clé primaire peut-être... Néanmoins je dois avouer qu'une clé primaire que tu dois incrémenter à la main Tu es sûr que tu ne pourrais pas redésigner la base ?
    Par ailleurs je ne vois pas trop pourquoi avoir plusieurs petit fichiers serait plus rapide qu'un gros fichier, a priori il me semble que l'élément limitant c'est la BDD pas la vitesse des entrées/sorties de l'OS, de ce point de vue d'ailleurs, paralléliser le processus de requêtes ne semble pas susceptible d'améliorer la situation (je ne vois pas pourquoi la BDD traiterait plus vite des requêtes qu'elle recevrait en parallèle (vous avez un multicore, ou du vrai multiprocesseur ?).

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Par défaut alors...
    j'ai l'impression que plus les fichiers d'entrée /de sortie sont petits, plus ça va vite en perl en sachant que mon programme perl fait aussi des SELECT dans la base

    Concrètement:
    - avec un fichier d'entrée de 60 000 lignes qui donne un fichier de sortie de 99 803 lignes, mon programmme a pris 35 min
    - j'ai divisé ce fichier en 6 fichiers d'entrée (de 10 000 lignes) et crée aussi 6 fichiers de sortie : ç'a prit 12 min au total pour traiter ces 6 fichiers en même temps

    Quant au processeur je ne pense pas que ce soit du multicore, ou du vrai multiprocesseur car je fais des tests, je ne suis pas en prod


    cathy

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Par défaut j'avais oublié de dire
    que ce n'est pas SQLLOADER qui est lent, c'est le code perl qui traite les données (select dans la base + i/o dans les fichiers ) qui est lent

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Qu'entends-tu par la lenteur de Perl ? Il prend trop de temps à écrire dans les fichiers à ton goùt ? Un petit problème de bufferisation ?

    Je dis ça, je dis rien mais si ça peut servir de piste...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Par défaut je ne sais pas trop
    au fait c'est par rapport au résultat final: 35 min / 12 min

    Cathy

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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