Quelle est la différence entre autoReconnect & amp; autoReconnectForPools dans le connecteur MySql / J?
Dans la configuration de référence pour MySql connecteur J piloteun caveat emptor est émis sur l'utilisation de la autoReconnect de la propriété. J'ai suivi les instructions et l'augmentation de mon serveur wait_timeout. Depuis que je suis à l'aide de DBCP (j'envisage de déménager à c3po après lecture de plusieurs posts sur Stackoverflow abattant DBCP ), est-il ok pour utiliser le autoReconnectForPools propriété ? Que faut-il réellement faire lorsqu'il est activé sous DBCP ou de toute connexion de la piscine pour vous ?
source d'informationauteur ashitaka
Vous devez vous connecter pour publier un commentaire.
autoReconnect lèvera une exception SQLException pour le client, mais vais essayer de ré-établir la connexion.
autoReconnectForPools vais essayer de faire un ping du serveur avant chaque exécution de SQL.
J'ai eu beaucoup de problèmes avec dbcp dans le passé, en particulier les déconnexions. La plupart ont été résolus en déplaçant à c3p0. Notez que le pilote mysql dispose d'une connexion testeur de c3p0 (com.mysql.jdbc.de l'intégration.c3p0.MysqlConnectionTester).
Aussi, vous pouvez vérifier cela: Options de groupement de connexions avec JDBC: DBCP vs C3P0
MySQL
autoReconnect
fonctionnalité est déconseillée, car elle a de nombreuses questions (ref: officiel la documentation).autoReconnectForPools
a peu à voir avecautoReconnect
il a plus à voir avecautoCommit
etreconnectAtTxEnd
- lorsque tous les 3 sonttrue
il va faire un ping du serveur à la fin de chaque transaction et de se reconnecter automatiquement si nécessaire.DBCP la connexion de validation est imparfaite - même quand
testOnBorrow
est défini, il retourne parfois cassé les connexions à partir de la piscine (pour ne pas mentionner le test d'une connexion à chaque fois avant de l'emprunter, c'est horriblement inefficace).Selon cet articleHikariCP semble être une meilleure piscine de mise en œuvre, car il est capable d'utiliser JDBC4
isValid()
API qui est beaucoup plus rapide que l'exécution d'une requête de test, et est spécialement conçu pour ne jamais revenir cassé les connexions à l'application cliente.Êtes-vous sûr que vous êtes en utilisant DBCP correctement?
Selon la de courtes notes sur la configurationil est censé s'occuper de délais d'attente assez bien grâce à la valeur par défaut de
testOnBorrow=true
(teste la connexion avant d'être utilisé, et si elle échoue, elle est supprimée de la piscine et nous essayons de trouver un nouveau lieu).La seule chose que vous devez faire est-à-assurez-vous de configurer le
validationQuery
propriété à une valeur non-nulle de la Chaîne, par exemple "SELECT 0" pour la base de données MySQL (ici est un post sur les différentes validationQuery valeurs par DB).