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 Firebird Discussion :

Insertions multiples de plus en plus longues


Sujet :

SQL Firebird

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    230
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 230
    Par défaut Insertions multiples de plus en plus longues
    Bonjour,

    J'ai une application qui effectue des acquisitions de signaux sur 16 voies. Toutes les 10 secondes, je dois stocker 40 valeurs réelles par voie --> au total 640 valeurs réelles sont à stocker toutes les 10 secondes.

    Voici quelques explications de ma base dont de schéma est en pièce jointe :
    - table DEF contient la définition des voies (16 voies)
    - table INDIC contient la définition des indicateurs à stocker (40 indics)
    - table SEG contient les infos d'un segment (1 segment = plage de 10s)
    - table VAL_INDIC est la table contenant les valeurs réelles (40 valeurs/voie/segment). Cette table contient 3 clefs étrangères pour les tables DEF, INDIC et SEG.

    La tâche d'insertion est la suivante:
    - au bout de 10 secondes, j'insère un segment dans SEG
    - je parcourt les 16 voies et pour chaque voie j'insère les 40 valeurs

    Cette tâche fonctionne mais les temps d'insertions sont de plus en plus longs, la croissance est quasiment linéraire:
    - 800ms pour le segment 1 (= base vide)
    - 4300ms pour segment 5300

    Mon problème est qu'au bout d'un moment l'insertion prendra plus de temps que l'acquisition est mon application va planter

    En cherchant sur le forum, j'ai trouvé quelques pistes que j'ai déjà mis en place:
    - en début d'acquisition, je retire les 3 clefs étrangères de la table VAL_INDIC. Celles-ci sont remises en fin d'acquisition.
    - je n'utilise pas le générateur pour incrémenter le ID de la table VAL_INDIC: je recherche le max au début de l'insert puis je l'incrémente. Pas de problème à priori car ma base est mono-poste, mono-user.
    - les 640 insertions sont dans une transaction, le commit est uniquement fait à la fin.

    Je gagne en rapidité mais malgré tout les temps d'insertions sont de plus en plus longs:
    - 800ms pour le segment 1 (= base vide)
    - 2000ms pour segment 5300

    D'où mes
    - ce comportement est-il normal ?
    - mon schéma de base base est-il correct ? Est-ce que je peux l'améliorer ?
    - est-il possible de stabiliser ces temps d'insertions ? Si les 640 insertions prennent 4000ms, pas grave mais il ne faut pas que ce temps augmente.

    Merci d'avance pour vos conseils.
    Images attachées Images attachées  

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

Discussions similaires

  1. Windows Azure : plus simple, plus flexible, plus ouvert
    Par Gordon Fowler dans le forum Microsoft Azure
    Réponses: 2
    Dernier message: 08/06/2012, 21h44
  2. Réponses: 3
    Dernier message: 01/03/2010, 20h19
  3. Réponses: 7
    Dernier message: 19/03/2008, 14h31
  4. Insertion d'un entier de plus de 10 caractères ?
    Par dubidon dans le forum VB.NET
    Réponses: 6
    Dernier message: 23/05/2007, 13h54
  5. Migration (requête de plus en plus longue)
    Par Louis-Guillaume Morand dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/05/2006, 14h04

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