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

JDBC Java Discussion :

Lenteur JDBCTemplate et Oracle


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut Lenteur JDBCTemplate et Oracle
    Bonjour,

    J'utilise actuellement une connexion vers une base oracle via un JDBCTemplate, mais nous obtenons des performances très faibles sans savoir d'où cela pourrait provenir.

    La requête concernée est une insertion en base de 10 000 éléments via un INSERT ... SELECT FROM... . Lorsque l'on l'exécute dans Oracle SQL Developer, cela prend une demi seconde. Dans l'application Java via le JDBCTemplate, l'exécution de la même requête SQL prend entre 8 et 15 secondes avec la méthode update (avec le preparedStatement qui contient une clé). En revanche, l'insertion de peu d'éléments (quelques dizaines) reste rapide : moins d'une seconde.

    A priori ca ne vient donc pas du SQL proprement dit, vu qu'il s'exécute rapidement, mais bien de l'encapsulation dans JDBC.

    Si vous avez des pistes pour essayer de voir d'où cela peut provenir, je suis preneur.

    N'hésitez pas à me demander si vous avez besoin d'informations supplémentaires.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on peux voir le code?

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    Au niveau de la requête d'insertion, c'est sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    insert into RES (RES_ID, RES_KEY)
    WITH TMP AS
      (
      SELECT DISTINCT foreign_id
      FROM bridge
        JOIN ( SELECT id FROM parent JOIN children ON parent_id = children_parent_id where group_id in (509) ) ON id = foreign_id
        WHERE
          1 = 1
      )
    SELECT DISTINCT RES_ID, RES_KEY
    FROM bridge
      JOIN TMP ON (RES_ID = foreign_id)
    Au niveau du java, on appelle directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JdbcTemplate jdbcTemplate = getJdbcTemplate();
    jdbcTemplate.update(query, preparedStatementSetter);
    Après d'autres, en testant sur un autre serveur, qui tourne sous Websphere (alors que le développement s'effectue sous Tomcat), l'exécution est beaucoup plus rapide.

    Merci d'avance de votre aide.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Est-ce que ce ne serait pas un problème de configuration de ton connection pool (trop petit?) oracle met à peu près 2 secondes à établir une nouvelle connection db, si le connection pool est trop petit, tu utilise peut etre a chaque fois une nouvelle connection. PS: s'agit-il du JdbcTemplate de Spring?

  5. #5
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    Ca pourrait être effectivement un problème de pool, même si la différence très importante de temps d'exécution me fait douter un peu. Comment peut on modifier ce nombre de pool dans Spring sachant que l'on utilise pas Hibernate pour cette partie là ?

    J'utilise bien le JdbcTemplate de Spring : org.springframework.jdbc.core.JdbcTemplate

Discussions similaires

  1. Problème de lenteur Oracle 10gR1/linux Red HAt AS 3
    Par kanko dans le forum Administration
    Réponses: 14
    Dernier message: 01/12/2008, 10h19
  2. Lenteur connexion ADO Oracle
    Par hrezzaz dans le forum Bases de données
    Réponses: 5
    Dernier message: 16/04/2008, 16h04
  3. [Oracle 10.2][Client 8i][Protocole net8] Pb lenteur
    Par Bahan dans le forum Administration
    Réponses: 3
    Dernier message: 19/03/2008, 16h36
  4. [Généralités] Lenteur requete avec ODBC (Oracle)
    Par lars528 dans le forum Access
    Réponses: 12
    Dernier message: 30/11/2006, 09h24
  5. Lenteur application sous oracle 9i
    Par aketh dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 08/08/2006, 20h29

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