Pool de connexion externe(External connection pool)
Pour éviter les retards liés à l’utilisation fréquente de connexions externes, le sous-système de sources de données externes (EDS) utilise un pool de connexions externes.Le pool stocke les connexions externes non utilisées pendant un certain temps, évitant ainsi les coûts de connexion/déconnexion pour les chaînes de connexion fréquemment utilisées.
Comment fonctionne la mise en commun des connexions :
-
chaque connexion externe est associée à un pool lors de sa création ;
-
Le pool de connexion a deux listes : une pour les connexions inutilisées et une pour les connexions actives ;
-
lorsqu’une connexion devient inutilisée (c’est-à-dire qu’elle n’a pas de demandes actives ni de transactions actives), elle est réinitialisée et placée sur la liste en attente (si la réinitialisation réussit) ou fermée (si la réinitialisation échoue). La connexion est réinitialisée à l’aide de l’instruction
ALTER SESSION RESET
. La réinitialisation est considérée comme réussie si aucune erreur ne s’est produite.NoteSi la source de données externe ne supporte pas l’instruction
ALTER SESSION RESET
, ceci n’est pas considéré comme une erreur et cette connexion sera placée dans le pool. -
Si le pool a atteint la taille maximale, la connexion inactive la plus ancienne est fermée ;
-
lorsque Firebird demande une nouvelle connexion externe, le pool recherche d’abord un candidat dans la liste des connexions inactives. La recherche est basée sur 4 paramètres :---
-
chaîne de connexion ;
-
nom d’utilisateur ;
-
mot de passe ;
-
rôle.
La recherche est sensible à la casse ;
-
-
si une connexion appropriée est trouvée, on vérifie si elle est vivante ;
-
si la connexion échoue au test, elle est supprimée et la recherche est répétée (aucune erreur n’est renvoyée à l’utilisateur) ;
-
La connexion trouvée (et active) est déplacée de la liste des connexions inactives à la liste des connexions actives et retournée à l’appelant ;
-
s’il existe plusieurs connexions appropriées, celle qui est la plus utilisée sera sélectionnée ;
-
si aucune connexion appropriée n’est disponible, une nouvelle connexion est créée et placée dans la liste des connexions actives ;
-
Lorsque la connexion inactive a expiré, elle est retirée du pool et fermée.
Caractéristiques principales :
-
pas de connexions externes "permanentes" ;
-
un nombre limité de connexions externes inactives (idle) dans le pool ;
-
permet une recherche rapide parmi les connexions (sur la base des 4 paramètres ci-dessus) ;
-
le pool est partagé par toutes les bases de données externes ;
-
le pool est partagé par toutes les connexions locales gérées par ce processus Firebird.
Paramètres du pool de connexion externe :
-
durée de vie de la connexion : intervalle de temps depuis la dernière utilisation de la connexion, après lequel elle sera fermée de force. Le paramètre ExtConnPoolLifeTime dans firebird.conf. La valeur par défaut est de 7200 secondes ;
-
Taille du pool : le nombre maximum autorisé de connexions inactives dans le pool. Le paramètre ExtConnPoolSize dans firebird.conf. La valeur par défaut est 0, c’est-à-dire que la mise en commun des connexions externes est désactivée.
Le pool de connexions externes et ses paramètres peuvent être contrôlés par des Instructions spéciaux.Voir ALTER EXTERNAL CONNECTIONS POOL pour plus de détails.
L’état du pool de connexion externe peut être interrogé à l’aide de variables contextuelles dans l’espace de noms SYSTEM
.
Variable | Description |
---|---|
EXT_CONN_POOL_SIZE |
Taille du pool. |
EXT_CONN_POOL_LIFETIME |
Durée de vie des composés inactifs. |
EXT_CONN_POOL_IDLE_COUNT |
Le nombre actuel de connexions inactives dans le pool. |
EXT_CONN_POOL_ACTIVE_COUNT |
Le nombre actuel de connexions actives dans le pool. |