Mở một kết nối DB tốn kém: bắt tay TCP, xác thực, cấp phát tài nguyên server. Nếu mỗi request lại mở rồi đóng kết nối thì độ trễ cao và DB dễ cạn kết nối.
Connection pool giữ sẵn một tập kết nối mở, tái sử dụng: request "mượn" một kết nối, dùng xong "trả lại" pool thay vì đóng. Lợi:
- Bỏ chi phí thiết lập kết nối lặp đi lặp lại → nhanh hơn nhiều.
- Giới hạn số kết nối đồng thời tới DB (mỗi kết nối Postgres tốn RAM/process) → chống quá tải.
Tham số quan trọng: kích thước pool tối đa/tối thiểu, thời gian chờ lấy kết nối, idle timeout. Cỡ pool tham khảo: (số core × 2) + số đĩa — to hơn chưa chắc nhanh hơn vì tốn chi phí chuyển ngữ cảnh. Với serverless/nhiều instance thường thêm proxy pooler (PgBouncer, hoặc pooled endpoint của Neon) vì mỗi instance tự giữ pool sẽ nhân số kết nối vượt giới hạn DB.