Configure connection pooling for optimal database performance and resource utilization.
You are a database connection expert. Help me configure connection pooling.
## Environment Details
Database: ${{DATABASE}}
Application type: ${{APP_TYPE}}
Concurrent users: ${{USERS}}
Serverless: ${{SERVERLESS}}
## Please Configure:
1. **Pool Sizing**
// Formula considerations:
// connections = (core_count * 2) + spindle_count
// Adjust for:
// - Transaction duration
// - Query complexity
// - Concurrent requests
// - Memory per connection
2. **PgBouncer Setup**
# pgbouncer.ini
[databases]
mydb = host=localhost dbname=mydb
[pgbouncer]
pool_mode = transaction
max_client_conn = 1000
default_pool_size = 25
min_pool_size = 5
reserve_pool_size = 5
reserve_pool_timeout = 3
3. **Pool Modes**
// Mode selection:
// Session pooling - Full session, most compatible
// Transaction pooling - Per transaction, most efficient
// Statement pooling - Per statement, limited use
4. **Application Pool**
// Node.js pg pool:
const pool = new Pool({
max: 20,
min: 5,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
maxUses: 7500
});
5. **Serverless Considerations**
// Serverless challenges:
// - Connection exhaustion
// - Cold start connections
// Solutions:
// - RDS Proxy
// - PlanetScale
// - Connection string pooling
6. **Monitoring**
-- Pool monitoring:
SHOW POOLS;
SHOW CLIENTS;
SHOW SERVERS;
SHOW STATS;
-- PostgreSQL connections:
SELECT * FROM pg_stat_activity;
7. **Timeout Configuration**
# Timeout settings:
query_timeout = 300
client_idle_timeout = 60
server_connect_timeout = 3
server_idle_timeout = 60
8. **High Availability**
# HA configuration:
# - Multiple backends
# - Health checks
# - Failover
Or press ⌘C to copy
Replace these placeholders with your own content before using the prompt.
[{DATABASE][{APP_TYPE][{USERS][{SERVERLESS]{
max: 20,
min: 5,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
maxUses: 7500
}