跳转到内容
搜索文档

连接池

最后更新 查看 MarkdownAgent 设置

Hyperdrive 维护到数据库的连接池,并最优部署以最小化应用延迟。你可以配置 Hyperdrive 配置用于连接源数据库的连接数,根据数据库容量和应用需求调整连接池大小。

例如,若 Worker 向数据库发起大量查询(且无法由 Hyperdrive 缓存解决),你可能希望 Hyperdrive 建立更多数据库连接。 反之,若 Worker 实际到达数据库的查询很少,或数据库允许的连接数较少,则可减少 Hyperdrive 建立的连接数。

所有配置最少 5 个连接,上限取决于 Workers 套餐。详情请参阅限制

Hyperdrive 如何池化数据库连接

Hyperdrive 会根据流量和数据库负载自动扩展持有的数据库连接数。

max_size 参数作为软限制——在网络问题或高流量期间,Hyperdrive 可能临时创建额外连接以确保高可用性和弹性。

池化模式

Hyperdrive 连接池以事务模式运行:执行查询的客户端在事务期间通过单一连接通信。事务完成后,连接归还池中。

Hyperdrive 在事务或查询期间支持 SET 语句。例如,若手动用 BEGIN/COMMIT 创建事务,SET 语句在事务内生效。包含 SET 的查询(SET X; SELECT foo FROM bar;)也会应用该 SET。连接归还池时会执行 RESET,后续查询不会受先前 SET 影响。

这意味着单个 Worker 调用可能获取多个连接以执行数据库操作,且可能需要在每次查询或事务中 SET 配置。不建议用单一事务包装多个数据库操作以维持 SET 状态,否则会损害 Hyperdrive 的性能与扩展性,因为事务期间连接无法被其他 Worker isolate 复用。

Hyperdrive 支持 postgres.jsnode-postgres 驱动实现的命名 prepared statement。其他驱动的命名 prepared statement 可能性能较差或不受支持。

最佳实践

可通过 Cloudflare 仪表板或 Cloudflare API 配置连接数。以下最佳实践可帮助确定适合你场景的限制:

  • 保守起步:从较低连接数开始,根据应用性能按需增加。
  • 监控数据库指标:关注数据库连接使用情况和性能指标以优化连接数。
  • 考虑数据库限制:确保配置的连接数不超过数据库最大连接限制。
  • 考虑多配置:若有多个 Hyperdrive 配置连接同一数据库,需考虑所有配置的总连接数。

后续步骤

这篇文档对您有帮助吗?