J'ai un problème de connexion très lente entre mon code Java et une base de données MySQL. Je ne sais pas où se trouve le goulot d'étranglement.
Mon programme est plus ou moins un chatbot. L'utilisateur tape quelque chose, mon programme divise la phrase en mots et l'envoie mot par mot à la base de données. S'il y trouve quelque chose, l'utilisateur obtient un résultat. La base de données est sur un serveur externe, mais j'ai aussi essayé de me connecter à un ordinateur à côté de moi. Les deux sont lents.
J'ai essayé la connexion une fois dans un autre endroit que celui où je travaille normalement et là, elle était rapide, la plupart du temps.
Mon code SQL :
SELECT info.INFORMATION FROM INFORMATION info, INFO_SCHLUESSEL sch
WHERE LCASE(sch.SCHLUESSELWORT) LIKE ' "" + input + "%' AND info.ID_INFO = sch.ID_INFO
Order BY info.PRIORITAET DESC LIMIT 1 ;
(je viens de me souvenir, si cela peut aider à comprendre le code SQL :
schluessel = clé
Schluesselwort = mot clé
prioritaet = priorité)
Mon code de base de données Java est plus ou moins standard :
String driver = "com.mysql.jdbc.Driver" ;
String dbase = "jdbc:mysql://bla" ;
String dbuser = "bla" ;
String dbpw = "bla" ;Class.forName(driver) ;
Connexion con = DriverManager.getConnection(dbase, dbuser, dbpw) ;
Statement stmt = con.createStatement() ;ResultSet rs = stmt.executeQuery(query) ;
while (rs.next())
{
ergebnis = rs.getString("info.INFORMATION") ;
}rs.close() ;
stmt.close() ;
con.close() ;
éditer :
J'ai essayé ce DBCP depuis un moment maintenant, et je n'arrive pas à le faire fonctionner. Il semble être aussi lent que l'ancienne connexion. Voici l'exemple fourni par le site Web que j'utilise :
GenericObjectPool connectionPool = new GenericObjectPool(null) ;
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory("jdbc:mysql://bla", "bla", "bla") ;
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true) ;
PoolingDriver driver = new PoolingDriver() ;
driver.registerPool("exemple",connectionPool) ;
Connexion conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:example") ;