内容提要
PgBouncer已被弃用,建议使用Supavisor。Supabase支持无服务器架构,提供Postgres数据库的直接访问。连接池技术提高了数据库连接效率,避免了因并发请求导致的连接过载。新项目将自动包含连接池功能,用户可在仪表板中调整连接模式。
延伸解读
连接池如何应对突发流量
在无服务器架构中,每个并发请求都会新建数据库连接,突发流量容易导致连接数激增,压垮Postgres。连接池预先打开并复用连接,少量连接即可支撑数倍需求。PgBouncer像队列一样,当连接用尽时排队等待,而不是直接拒绝请求。但若查询耗时过长,连接释放慢,仍需增加数据库资源或调整池大小。
澄清常见误解
一个常见误解是PgBouncer能增加Postgres实例的最大连接数。实际上,如果Postgres配置最多50个连接,连接池并不会改变这个上限。它只是保持连接打开并空闲,随时供客户端使用。因此,连接池让数据库能处理更多请求,但并非突破连接数限制的魔法。
三种池模式的选择建议
PgBouncer提供会话、事务和语句三种池模式。会话模式在客户端断开前一直分配连接,支持所有Postgres功能。事务模式在事务结束后归还连接,适合无服务器函数,但可能不支持预处理语句等会话级功能。语句模式在每个语句后归还连接,仅适用于自动提交场景。用户可在仪表板中调整模式。
新项目自动启用与后续计划
从即日起,所有新项目将自动包含连接池功能,用户可在仪表板的数据库部分查看连接详情并修改池模式。目前没有计划将此功能移植到旧项目。未来将向UI暴露更多PgBouncer设置,如池大小,当前固定为15。团队还在努力将最新版Supabase Postgres上架到AWS和Digital Ocean市场。
Q&A
PgBouncer被弃用的原因是什么?
PgBouncer被弃用是因为建议使用Supavisor,后者更适合无服务器架构的需求。
Supabase如何支持连接池技术?
Supabase通过在新项目中自动包含连接池功能,利用PgBouncer来提高数据库连接效率。
连接池模式有哪些类型?
连接池模式包括会话模式、事务模式和语句模式,适用于不同的使用场景。
使用连接池有什么好处?
使用连接池可以提高数据库连接效率,避免因并发请求导致的连接过载。
PgBouncer如何处理连接请求?
PgBouncer通过排队机制处理连接请求,当所有连接被占用时,它会将新请求排队,直到有连接可用。
Supabase的连接池设置在哪里可以调整?
用户可以在Supabase仪表板的数据库部分找到连接池设置,并调整连接模式。