2009-08-25 7 views

Répondre

2

Je dirais que vous avez deux problèmes:

  • Vous ne savez pas si vous avez besoin la mise en commun de connexion ou non

et

  • Si vous trouvez qu'il est nécessaire , vous ne savez pas comment l'implémenter.

Je commencerais par supposer que vous n'en avez PAS besoin, la réutilisation des connexions est une optimisation (peut-être prématurée). Toutefois, si vous constatez que vous en avez vraiment besoin, la manière dont vous le faites dépend de la nature de votre serveur d'applications.

  • Si votre application est « en cours » avec Apache, vous avez vraiment pas d'autre choix que d'une connexion par processus (ou fil)
  • Si votre application est « en dehors du processus », par exemple En vous connectant à Tomcat via mod_jk, vous pouvez faire ce que vous voulez au sein du serveur d'application (Tomcat), ce qui peut inclure des connexions de pool à utiliser sur plusieurs threads, le cas échéant.

raisons impérieuses pour utiliser une nouvelle connexion à chaque fois sont:

  • Aucun effet secondaire indésirable du vieux état de connexion gauche par les demandes précédentes
  • Vous connectez uniquement en cas de besoin - moins de risque de faire exploser votre base de données connexions
  • performances prévisible - vous pouvez mesurer le temps pris pour la demande, y compris la création de la connexion

La seule raison convaincante pour réutiliser des connexions est le temps système de connexion lui-même.

Certaines bases de données sont relativement lentes à créer des connexions (Oracle) - d'autres sont beaucoup plus rapides (MySQL). Certaines bases de données peuvent être réglées pour conserver en interne un pool de threads qu'elles réutilisent (MySQL), ce qui rend la connexion encore plus rapide.

0

Bien que je n'ai pas de réponse définitive (et je cherche aussi), je peux suggérer les éléments suivants (pour un back-end perl):

  • si vous utilisez mod_perl2, alors jetez un oeil à Apache :: DBI (http://metacpan.org/pod/Apache::DBI). Il a quelques inconvénients, qui sont répertoriés sur la page.
  • Si vous utilisez perl DBI pour vous connecter à votre base de données, utilisez l'appel de méthode connect_cached() au lieu d'utiliser l'appel de méthode connect().
Questions connexes