Hyperdrive 维护到数据库的连接池,并最优部署以最小化应用延迟。你可以配置 Hyperdrive 配置用于连接源数据库的连接数,根据数据库容量和应用需求调整连接池大小。
例如,若 Worker 向数据库发起大量查询(且无法由 Hyperdrive 缓存解决),你可能希望 Hyperdrive 建立更多数据库连接。 反之,若 Worker 实际到达数据库的查询很少,或数据库允许的连接数较少,则可减少 Hyperdrive 建立的连接数。
所有配置最少 5 个连接,上限取决于 Workers 套餐。详情请参阅限制。
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.js 和 node-postgres 驱动实现的命名 prepared statement。其他驱动的命名 prepared statement 可能性能较差或不受支持。
可通过 Cloudflare 仪表板或 Cloudflare API 配置连接数。以下最佳实践可帮助确定适合你场景的限制:
- 保守起步:从较低连接数开始,根据应用性能按需增加。
- 监控数据库指标:关注数据库连接使用情况和性能指标以优化连接数。
- 考虑数据库限制:确保配置的连接数不超过数据库最大连接限制。
- 考虑多配置:若有多个 Hyperdrive 配置连接同一数据库,需考虑所有配置的总连接数。
- 了解更多 Hyperdrive 工作原理。
- 查看 Hyperdrive 限制(按 Workers 套餐)。
- 了解如何从 Hyperdrive 连接 PostgreSQL。