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

Bases de données Delphi Discussion :

lenteur insert dans BD Access


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut lenteur insert dans BD Access
    Bonjour,

    J'ai un problème de lenteur avec une BD Access lorsque j'effectue un insert de plusieurs milliers de valeurs.

    Comment puis-je palier à ce problème ? est-il bien d'utiliser une BD access quand on gère bcp de données ? Si non quelle autre BD me conseillez-vous ?

    Merci de vos infos

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    J'ai un problème de lenteur avec une BD Access lorsque j'effectue un insert de plusieurs milliers de valeurs.
    C'est peut être normal tu envois beaucoup d'informations à la base de données (plusieurs millers). Mais j'aimerai savoir quel type de composants (ADO/BDE en natif/ODBC/autre) et la version d'ACCESS que tu utilises

    Comment puis-je palier à ce problème ? est-il bien d'utiliser une BD access quand on gère bcp de données ? Si non quelle autre BD me conseillez-vous ?
    Si tu gères bien les transactions avec ACCESS, un grand nombre d'enregistrement n'est pas génant, mais la il me faudrait plus d'info (voir au dessus) pour vraiment savoir d'où vient ton problème de lenteur (qui est peut être normal vu le nombre d'informations à traiter)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut
    J'utilise ADO avec le moteur JET

    Si j'enregistrais mes données dans un fichier texte cela se passerait bcp plus vite il me semble ?

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    1- Les composants MDAC de ton PC sont ils à jour ?
    2- Tu insères dans la base de données de quel manière ? Append-Post ou Requete Insert ?
    3- Est ce que tu utilises le beginTrans et commitTrans ? Si oui de quelle manière ?

    Sinon, pour le traitement dans un fichier texte, oui cela sera plus rapide mais après pour la récupération des informations ou le traitement de données, je pense que la base de données sera beaucoup mieux.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut
    Mes composants MDAC sont bien à jour

    J'utilise effectivement la requête INSERT

    Tu me parles de commitTrans et beginTrans, je n'utilise pas ceci. devrais-je en avoir besoin ?

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le beginTrans et le commitTrans (voir RollbackTrans) permettent de gérer des transactions. Mais vu que tu ne les utilises pas, pas besoin de rajouter une chose qui va encore ralentir ton traitement ^^

    Combien d'enregistrement par secondes tu traites ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut
    il y a une méthode pour le savoir ?

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le nombre d'enregistrements que tu envois divisé par le nombre de secondes du temps que cela a mis ^^

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 149
    Points : 69
    Points
    69
    Par défaut
    environs 1000 données / secondes

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Euh ... t'appel ca lent ????

    Tu veux quoi comme rapidité ? Car la, franchement, c'est rapide.

    Je ne pense pas que changer de système de base de données te fasse gagner grand chose en rapidité de traitement (est ce bien utile pour 100 voir 200 enregistrement /s ?)

    Tu pourras peut être gagner un peu de temps en envoyant des paquets de x requetes d'un coups

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    With AdoQuery do
    begin
      SQL.Clear;
      SQL.Add('Ma 1er requete insert ;'); // ne pas oublier le ; a la fin de la requete
      SQL.Add('Ma 2em requete insert ;');
     ...
      SQL.Add('Ma X em Requete insert ;');
      ExecSQL;
    end;
    Je vois pas d'autres solutions pour accélérer le processus.

  11. #11
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    J'ai eu aussi des problèmes aléatoires avec ADO et Access lors de mises à jour de bases de données en effectuant plusieurs milliers de modifications de rang (le message renvoyé par l'appli me renvoyait un conflit de clé qui n'existait pas).

    Je l'ai résolu (ce fut galère) en modifiant un paramètre de configuration du moteur Access dans la base de registre :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0\ImplicitCommitSync=yes

    A essayer, sans garantie ...

  12. #12
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonjour,
    Serait-il possible de voir le code qui se charge des mises à jour des tables Access?
    Si non, quel type de curseur est utilisé?
    Pourquoi un insert au lieu d'un append?
    (L'insert d'un composant gére les index...)
    Quelle est la fréquence des mises à jour?
    Le système est-il contraint d'effectuer les mises à jour en 1 seule opération?
    Cordialement,
    Hauwke

Discussions similaires

  1. Insertion dans BD access
    Par Kassar dans le forum JDBC
    Réponses: 6
    Dernier message: 22/12/2009, 11h47
  2. erreur insertion dans bd access
    Par vviros dans le forum ASP
    Réponses: 6
    Dernier message: 27/07/2007, 11h04
  3. Réponses: 9
    Dernier message: 11/06/2007, 17h58
  4. Problème insertion dans bdd access. Via VB express 2005
    Par Frosaf dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/06/2007, 19h19
  5. Problème Insert dans bdd Access
    Par waterman dans le forum Windows Forms
    Réponses: 10
    Dernier message: 10/04/2007, 18h15

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