PostgreSQL 连接池
pgbouncer 在应用和 PostgreSQL 之间复用连接,降低数据库连接数和建立连接的开销。它支持 session、transaction、statement 三种池模式。
pgbouncer -d /etc/pgbouncer/pgbouncer.ini
pgbouncer -v /etc/pgbouncer/pgbouncer.ini
pgbouncer -R /etc/pgbouncer/pgbouncer.ini
管理控制台:
psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer
SHOW POOLS;
SHOW STATS;
SHOW CLIENTS;
SHOW SERVERS;
RELOAD;
PAUSE;
RESUME;
pgbouncer.ini:
[databases]
app = host=127.0.0.1 port=5432 dbname=app
[pgbouncer]
listen_addr = 0.0.0.0
listen_port = 6432
auth_type = scram-sha-256
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
max_client_conn = 1000
default_pool_size = 20
transaction 模式下会话级状态(临时表、SET、advisory lock)不能跨事务保留。auth_file/auth_query 配置错误会导致认证失败;密码格式要匹配。RELOAD 只重载部分配置;改监听地址等需要重启。server_reset_query 影响后端连接复用。SHOW POOLS 的 cl_waiting、sv_active 和 sv_idle。psql — PostgreSQL 客户端pg_ctl — 服务端proxysql — MySQL 侧连接池合上页面,先回答,再展开对照。
SET 为什么失效?RELOAD 为什么没生效?RELOAD 只重载部分配置,改监听地址等需要重启。SHOW POOLS 的 cl_waiting,并结合 sv_active、sv_idle 判断。