Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Chapitre 31. Interface JDBC | Avance rapide | Suivant |
Un problème qu'ont beaucoup de pilotes JDBC est que seul
le premier thread peut utiliser une Connection
à la
fois --- sinon un thread pourrait lancer une requête alors qu'une autre est
en cours de réception de résultats, ce qui pourrait occasionner une
confusion.
Le pilote JDBC de PostgreSQL est compatibles avec les threads. En conséquence, si votre application utilise plusieurs threads, alors vous n'avez pas à vous inquiéter des algorithmes complexes qui s'assurent qu'un seul thread utilise la base de données à la fois.
Si un thread tente d'utiliser la connexion alors qu'un autre est en cours
d'utilisation, il attendra la fin de l'opération en cours par l'autre thread.
Si l'opération est une requête SQL standard, alors
l'opération consiste en l'envoi et en la récupération de
ResultSet
(en entier). S'il s'agit d'un appel
<< fast-path >> (c'est-à-dire en lisant un bloc d'un gros objet),
alors il consiste en l'envoi e en la réception des données respectives.
Ceci convient pour les applications et les applets mais cela peut causer des
problèmes de performance avec les servlets. Si vous avez plusieurs threads
exécutant des requêtes, tous sauf un s'arrêteront. Pour résoudre ceci, il
vous est conseillé de créer un pool (ensemble) de connexions. Lorsqu'un thread a
besoin d'utiliser la base de données, il demande au gestionnaire de la classe
un objet Connection
. Le gestionnaire donne une
connexion libre au thread et la marque comme occupée. S'il ne reste plus de
connexions libres, il en ouvre une. Une fois que le thread a terminé
d'utiliser la connexion, il la redonne au gestionnaire qui peut alors soit la
fermer soit l'ajouter de nouveau au pool. Le gestionnaire pourrait aussi
vérifier que la connexion est toujours vivante et la supprimer du pool
si elle est morte. Le mauvais côté d'un pool de connexions est que cela
accroît la charge sur le serveur parce qu'une nouvelle session est créée pour
chaque objet Connection
. C'est à vous de voir suivant
les besoin de vos applications.
Précédent | Sommaire | Suivant |
Extensions PostgreSQL à l'API de JDBC | Niveau supérieur | Ensemble de connexions et source de données |