Tous les termes du glossaire

Pool de connexions

Qu’est-ce qu’un pool de connexions dans PostgreSQL ?

Un pool de connexions maintient ouvert un ensemble de connexions à la base de données et les partage entre de nombreux clients, car chaque connexion PostgreSQL est servie par son propre processus serveur.

PostgreSQL suit un modèle à un processus par utilisateur : chaque connexion cliente est servie par son propre processus backend sur le serveur, et le paramètre max_connections plafonne le nombre de connexions simultanées. Un pool de connexions se place entre l’application et la base de données, garde ouvert un nombre limité de connexions au serveur et les distribue aux clients selon les besoins.

Le pool peut résider dans l’application (la plupart des pilotes et des ORM en incluent un) ou dans un pooler distinct placé devant le serveur, comme PgBouncer. En mode de pooling par transaction, une connexion serveur retourne au pool après chaque transaction ; la transaction suivante peut donc s’exécuter sur une autre connexion. Tout ce qui dépend de l’état de la session, comme les commandes SET au niveau de la session ou les tables temporaires, demande de la prudence dans ce mode.

Exemple

L’exemple affiche la limite de connexions du serveur et compte les connexions clientes actuelles par état. De nombreuses connexions inactives sont un signe fréquent qu’un pool serait utile.

SHOW max_connections;

SELECT state, count(*)
FROM pg_stat_activity
WHERE backend_type = 'client backend'
GROUP BY state;

Du SQL simple pour PostgreSQL 16 ou 17 standard, sans aucune extension. Exécutez-le dans une base de données vide que vous pouvez jeter ensuite.

Références

Documentation officielle de PostgreSQL (en anglais).

Termes associés