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

Développement Web en Java Discussion :

[sqlite] discussion sur les performances


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut [sqlite] discussion sur les performances
    Bonjour,

    J'ai fais un test pour voir les performances de mes insertions dans la base sqlite d'un de mes programme Java (au début la base est vide). Mais les performances semblent varier beaucoup au fur et à mesure que cela grossit

    Voici le graph des performances (nb d'enregistrements fonction du temps) et la vitesse d'enregistrements à la seconde qui est divisée par 10 !!



    Cela est pour moi un obstacle
    Y aurait-il un moyen d'améliorer cela ?

    Merci d'avance

  2. #2
    Membre actif Avatar de Jacobian
    Inscrit en
    Février 2008
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 425
    Points : 245
    Points
    245
    Par défaut
    tu peux faire une description détaillé de ton programme java ?

  3. #3
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Salut Ceubex,

    J'ai fait quelques tests depuis une application C++ il y a quelques années sur Sqlite, effectivement, lors d'une importation de masse, les performances étaient phénoménales lorsque la base était vide ( + de 5000 par sec.), en revanche, s'approchant du million, ça devenait catastrophique, tombant parfois à 50/sec.

    En fait, mes recherches m'avaient conduit à la conclusion que c'était parce que la vérification des contraintes (doublons et co...) se faisaient uniquement par des btree et non des hash index. De ce fait, les tests nécessaires aux nouveaux ajouts se multipliaient, sans parler du disk trashing.

    En fait je ne sais pas ce qu'il en est dans les versions actuelles donc ce que je dis est à prendre avec des pincettes. Sinon en premier lieu si c'est pas déjà fait, essaie d'utiliser un cache_size assez gros.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    Ok merci pour l'info skip
    Oui le cache size ça change un peu les choses mais ça n'est pas non plus le jour et la nuit.
    N'y a-t-il pas moyen de désactiver la vérification des contraintes dont tu parles ?

  5. #5
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    C'est bien possible, bon il restera toujours la clef primaire. De toutes façons dans mon cas, puisque l'importation était pas une routine one shot mais un truc qui allait devoir s'exécuter chaque jour, je voulais à tout prix conserver la possibilité de rejeter des enregistrements donc désactiver les contraintes était un risque trop gros.

    J'ai malheureusement pas vraiment de solutions... Il y a des articles un peu partout sur l'optimisation mais souvent ça demande des recompilations et ça a des effets de bord.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Il est possible que le problème vienne de la base de données proprement dite.
    Je verrais bien un problème de maintenance d'un chemin d'accès...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    Je vais chercher pour l'optimisation
    OButterlin, je ne comprends pas ce que tu veux dire

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    En fonction de la base de données, on peut avoir des problèmes sur les chemins d'accès, suite à des insertions massives, qui disparaissent après une reconstruction du CA.
    En ce qui concerne SQLITE, c'est une supposition, rien d'absolu, je ne l'utilise pas...
    Une autre piste est peut être la mémoire disponible qui diminue...
    Tu utilises la même transaction pour tous les enregistrements ?
    Si oui, essaye de fragmenter les commit (si c'est possible), par exemple par groupe de 1000 enregistrements.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    it is too difficult for me !!

  10. #10
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    J'avais déjà constaté la même chose sur une base MySql...
    Les deux solutions que j'ai trouvé ont effectivement été d'utiliser les batch au lieu de faire un executeUpdate par ligne, et surtout de désactiver/supprimer les contraintes (mais encore faut-il garantir extérieurement qu'elles sont respectées)
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

Discussions similaires

  1. [Performances] Discussion sur les performances
    Par funkydata dans le forum NxEngine
    Réponses: 15
    Dernier message: 06/06/2007, 14h41
  2. Votre avis sur les performances
    Par Rafy dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 12/08/2005, 08h28
  3. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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