2010-02-03 7 views
1

utilisant une connexion ODBC à une base de données MySQL, la connexion fois-après une période de 8 heures (par défaut).connexion de base de données pour les instructions préparées

Pour que ma demande soit résiliente, il faut recréer cette connexion pour émettre une requête de déclaration préparée.

Est-il possible d'émettre une nouvelle connexion de base de données pour une déclaration préparée?

Est-il logique de le faire?

Il apparaît comme des déclarations préparées sont créés sur une base de connexion.

La solution actuelle consiste à:

  1. Reconnect
  2. repréparer les requêtes
  3. Exécuter la requête

Répondre

0

Non, les déclarations préparées sont liées à une connexion, et non l'inverse autour. Votre façon actuelle de gérer une connexion expirée est correcte.

+0

êtes-vous en mesure de confirmer cela avec une documentation pertinente? J'ai essayé de chercher mais je n'ai rien trouvé d'utile. Je voudrais savoir plus d'informations sur la relation entre une instruction préparée et une connexion de base de données. merci – user128026

0

Je pense, avoir la connexion ouverte à la base de données SQL pendant 8 heures est une mauvaise pratique. Avez-vous une opération de longue durée, cela prend tellement de temps? Pensez alors à avoir une procédure stockée dans votre base de données, cela devrait décharger les résultats dans une table temporaire, que vous pourrez vérifier plus tard.

Mais normalement, l'application devrait libérer la connexion (et, ahh, toutes les déclarations préparées avec elle) dès que possible. Pour accélérer l'ouverture de la connexion, vous pouvez utiliser le pool de connexion (il devrait également exister pour ODBC). Le pool de connexions vérifie que la connexion est "active" avant de la renvoyer à l'application, par exemple, voir validationQuery paramètre pour Java DBCP.

+0

oui c'est un processus de longue durée. Lorsque le flux de données devient très faible, la connexion mysql est rarement utilisée. La mise en commun des connexions est une bonne idée, merci pour le lien – user128026

Questions connexes