FirebirdSQL logo
 Responsables du traitement des données(DML)fonctions scalaires 
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.

    Note

    Si 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.

Table 1. Variables de l’espace de noms SYSTEM pour contrôler le pool de connexion externe
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.

Caractéristiques des connexions externes
  1. Les connexions externes utilisent la clause par défaut WITH COMMON TRANSACTION et restent ouvertes jusqu’à ce que la transaction courante soit fermée. Ils peuvent être réutilisés dans des appels ultérieurs à l’instruction EXECUTE STATEMENT, mais uniquement si la chaîne de connexion est exactement la même. Si la mise en commun des connexions externes est activée, au lieu de fermer la connexion, ces connexions seront placées dans la liste des connexions inactives (idle) ;

  2. Les connexions externes créées à l’aide de la clause WITH AUTONOMOUS TRANSACTION sont fermées après l’exécution de l’instruction, ou sont mises dans la liste des connexions inactives du pool (si elle est activée) ;

  3. Les Instructions WITH AUTONOMOUS TRANSACTION peuvent utiliser des connexions qui ont été préalablement ouvertes par les Instructions WITH COMMON TRANSACTION. Dans ce cas, la connexion utilisée reste ouverte même après l’exécution de la déclaration, puisque cette connexion a au moins une transaction non fermée. Si le pool de connexions externes est activé, au lieu de fermer la connexion, ces connexions seront placées dans la liste des connexions inactives (idle) ;

  4. Si la transaction locale s’exécute en mode d’isolation READ COMMITTED READ CONSISTENCY et que la source de données externe ne supporte pas ce mode d’isolation, la transaction externe s’exécutera en mode d’isolation SNAPSHOT (CONCURRENCE).