Je rencontre des connexions extrêmement lentes à une base de données DB2 (v9.7 Express-C) locale via ODBC sur un système Windows 7 (x64). J'ai écrit plusieurs programmes de test, chacun se connectant à une base de données locale pendant 100 fois d'affilée (sans interroger) et mesurant l'heure. Les résultats sont les suivants:La connexion à DB2 via ODBC est extrêmement lente
C++ x86 DB2/ODBC: 32bit application C++, la connexion à une base de données DB2 locale via CDatabase
C++ x86 DB2/ODBC: comme ci-dessus, mais l'application x64
PHP DB2/ODBC: Connexion à une base de données DB2 locale via odbc_connect
.
PHP MySQL/ODBC: Connexion à une base de données MySQL locale via odbc_connect
.
JDBC DB2: Application Java, connexion à une base de données DB2 locale à l'aide du pilote DB2 JDBC.
JDBC MySQL: Application Java, connexion à une base de données MySQL locale à l'aide du pilote MySQL JDBC. Ma première pensée était que quelque chose ne va pas avec ma configuration ODBC, mais comme vous pouvez le voir se connecter à une base de données MySQL via ODBC fonctionne comme charme. D'autre part, se connecter à DB2 avec le pilote JDBC au lieu de ODBC fonctionne bien aussi (même si c'est beaucoup plus lent que MySQL). J'ai trouvé this related question, mais cela ne s'applique pas à moi. Tous les conseils sur ce qui pourrait causer cela et comment résoudre serait génial!
question supplémentaire: Quels sont les délais de connexion communes lors de la connexion à une base de données DB2 via ODBC? Est-il normal que le pilote DB2 ODBC soit si lent ?!
Avec ces quelques détails, il est impossible de vous donner une réponse significative, mais une chose que vous devriez regarder est l'activation de la base de données. DB2 active la base de données lors de la première connexion et la désactive lorsque la dernière connexion est fermée. Essayez d'émettre 'DB ACTIVATE' avant vos tests. –
mustaccio
Cela a aidé! Wow, merci, j'ai lutté avec ça pendant des jours! Postez cela comme une réponse et je vais accepter. Pourriez-vous également me dire comment je peux configurer mon instance DB2 pour qu'elle active toujours cette base de données après le démarrage? Aussi, pourquoi la connexion via JDBC est-elle si rapide? Le pilote JDBC ne peut pas activer la base de données elle-même, car l'utilisateur qui se connecte à la base de données a des privilèges insuffisants. –
Pouvez-vous fournir les valeurs de temps de connexion avec une base de données activée? – AngocA