Connection Pooling

NestJS 🔴 Senior

Définition

Technique de réutilisation de connexions base de données via un pool precharge. Évite le coût de création/destruction de connexions a chaque requête.

Analogie

Comme un parc de voitures partagées : au lieu que chacun acheté sa voiture, on partage un pool.

Exemple de code

TypeOrmModule.forRoot({
  type: 'postgres',
  host: 'localhost',
  extra: {
    max: 20,
    idleTimeoutMillis: 30000,
  },
})

Cas d'usage

Optimiser les performances en production en configurant le pool selon la charge attendue.

Anti-pattern

Créer une nouvelle connexion a chaque requête sans pool, saturant la base de données.
#database#interview

En entretien

  1. Explique-moi ce qu'apporte le connection pooling.

    C'est une technique qui réutilise des connexions base de données déjà ouvertes via un pool préchargé, au lieu de créer/détruire une connexion à chaque requête. C'est comme un parc de voitures partagées plutôt que chacun achète la sienne.

  2. Comment tu réglerais la taille du pool en prod, et que se passe-t-il si tu ne le configures pas ?

    Il faut dimensionner le pool (par exemple max et idleTimeoutMillis) selon la charge attendue de l'application. Sans pool, chaque requête crée une nouvelle connexion et finit par saturer la base de données.

  3. Comment tu débuggerais une base de données qui sature en connexions ?

    Je vérifierais d'abord si un pool est bien configuré au niveau de TypeOrmModule.forRoot, puis si sa taille max est cohérente avec le nombre d'instances de l'app qui tapent dessus en parallèle.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre