Files
nexus/wiki/concepts/ConnectionPooling.md
2026-05-03 05:42:12 +08:00

1.5 KiB
Raw Blame History

title, type, tags, last_updated
title type tags last_updated
Connection Pooling concept
database
connection-pool
postgresql
supabase
performance
infrastructure
2026-05-01

Connection Pooling

Definition

数据库连接池是一种在应用程序和数据库服务器之间维护一组持久连接的技术,避免每次请求都创建新连接,从而防止连接耗尽、提升响应速度。

Why It Matters

  • 数据库连接是稀缺资源PostgreSQL 默认 max_connections = 100
  • 无连接池时:高并发下连接数爆炸 → OOM → 服务崩溃
  • 无连接池时:每次请求建立 TCP + 认证开销(~20-50ms 延迟)

Key Tools

工具 说明
PgBouncer 轻量级 PostgreSQL 连接池,支持事务模式和会话模式
Supabase Pooler Supabase 内置连接池,自动管理事务模式连接
PlanetScale 内置连接池,无服务器架构
PgBouncer 事务模式 连接归还池复用,适合 serverless
PgBouncer 会话模式 保持长连接,适合需要 SET session.* 的场景

Supabase 连接池示例

// Supabase 事务模式Serverless 推荐)
const pooledUrl = process.env.DATABASE_URL?.replace(
  '5432',  // 标准端口
  '6543'   // 事务模式端口
);

Source

Connections