连接池
Prisma Postgres 默认提供内置的连接池,由Prisma Accelerate启用。通过使用 Prisma Postgres,您可以获得连接池的好处,而无需进行任何配置。高效的数据库连接管理使得数据库能够处理更多查询,而不会耗尽可用数据库连接,使您的应用更具可扩展性。
然而,在某些情况下,进一步配置连接池可能有助于优化您的应用性能。
本文档重点介绍 Prisma Postgres 的连接池功能。有关 Prisma ORM 特定内部连接池的更多信息,请参阅我们的ORM 连接池文档。
Prisma Postgres 中的连接池
目前,每个 Prisma Schema 的 Prisma Postgres 最多允许 10 个并发数据库连接。由于 Prisma Postgres 高效的 unikernel 架构最大限度地减少了对大型连接池的需求,此限制通常已足够。
如果您正在将您自己的数据库与 Prisma Accelerate 一起使用,连接限制有所不同
- Starter(入门)计划:最多
10
个连接。这对于大多数工作负载通常已足够,但如果您预期流量很高或计算操作密集,您可能希望增加此限制。 - Pro(专业)计划:支持最多
100
个并发连接。 - Business(商业)计划:支持最多
1000
个并发连接。
您可以在Prisma 定价页面上比较计划。
配置连接池大小
如果您没有使用 Prisma Postgres,您可以通过在连接字符串中指定来配置 Prisma ORM 的连接池大小。
对于 Prisma Postgres,当前连接限制固定为 10
,无法更改。
如果您正在将 Prisma Accelerate 与您自己的数据库一起使用,您可以通过 Accelerate 设置页面上项目中的 Connection limit
设置来配置连接池大小。
配置连接池超时
连接池超时是一个查询在等待从 Prisma Postgres 内部连接池获取连接时将阻塞的最大秒数。如果并发请求数超过连接限制,就会发生这种情况,导致额外的请求排队,直到有空闲连接可用为止。如果在池超时时间内没有空闲连接可用,将抛出异常。通过将值设置为 0 可以禁用连接池超时。
与连接池大小类似,您也可以通过数据库连接字符串配置连接池超时。要调整此值,您可以将 pool_timeout
参数添加到数据库连接字符串。
例如
postgresql://user:password@localhost:5432/db?connection_limit=10&pool_timeout=20
pool_timeout
的默认值为 10
秒。
配置查询限制
使用 Prisma Accelerate 时,您可以在 Prisma Postgres 项目环境的设置选项卡中配置查询响应大小的最小和最大值、查询持续时间以及事务限制。
查询超时限制
Prisma Postgres 为每个查询设置了默认的全局超时时间 10s
,您可以根据您的订阅计划使用标有查询持续时间的滑块进行配置
计划 | Starter | Pro | Business |
---|---|---|---|
查询超时 | 最多 10 秒 | 最多 20 秒 | 最多 60 秒 |
虽然您可以增加查询超时时间,但如果您的数据库查询耗时超过 10
秒,建议检查并优化它们。这有助于减轻底层数据库的压力,因为长时间运行的查询通常表明需要优化。有关更多信息,请参阅错误参考。
交互式事务查询超时限制
Prisma Postgres 为每个交互式事务设置了默认的全局超时时间 15s
,您可以根据您的订阅计划使用标有事务持续时间的滑块进行配置
计划 | Starter | Pro | Business |
---|---|---|---|
交互式事务限制 | 最多 15 秒 | 最多 30 秒 | 最多 90 秒 |
当您在 Prisma Console 中设置更高的交互式事务超时时间时,您必须通过超时事务选项在交互式事务查询中指定匹配的 timeout
值。否则,事务仍将在较低的默认值处超时(例如,未指定 timeout 值时的 5 秒限制)。以下是如何在代码中设置 30
秒超时的示例
await prisma.$transaction(
async (tx) => {
// Your queries go here
},
{
timeout: 30000, // 30s
}
);
虽然您可以增加交互式事务超时限制,但如果您的数据库事务耗时超过 15 秒,建议检查并优化它们。长时间运行的事务会对性能产生负面影响,并且通常表明需要进行优化。有关更多信息,请参阅错误参考并查看我们文档中交互式事务部分中的警告。
响应大小限制
Prisma Postgres 设置了默认的全局响应大小限制 5MB
,您可以根据您的订阅计划使用标有响应大小的滑块进行配置
计划 | Starter | Pro | Business |
---|---|---|---|
查询大小 | 最多 5MB | 最多 10MB | 最多 20MB |
虽然您可以增加查询响应大小,但建议将数据检索限制在您实际需要的内容。这可以提高数据库性能,减轻数据库压力,并使您的前端应用更具响应性。大小超过 5
MB 的查询通常表明需要进行优化。有关更多信息,请参阅错误参考。
自动扩缩容(仅限 Accelerate + 您自己的数据库)
自动扩缩容目前仅在使用 Prisma Accelerate 和您自己的数据库时可用。它根据您应用的流量启用动态资源分配。当使用量接近定义的连接限制时,Prisma 将开始预置额外的资源来处理负载。如果流量持续增长,系统将进一步扩展。当流量减少时,系统会缩减资源,从而确保高效利用资源。
工作原理
自动扩缩容由一个连接池提供支持,该连接池通过将总可用连接分配到多个查询引擎实例来横向扩展您的环境。
以下是其实际工作原理
- 假设您的环境连接限制设置为
1000
。 - Prisma Accelerate 将扩展到多个查询引擎实例(例如,100 个实例)。
- 每个实例分配到总数的一部分——在此示例中,每个实例 10 个连接。
- 这就是为什么即使整个环境支持 1000 个并发连接,每个查询引擎实例仍报告限制为 10 的原因。
这种分布式模型允许您的应用通过启动更多查询引擎实例来处理增加的流量,同时高效管理连接使用。
启用自动扩缩容
当您的 Accelerate 连接限制设置为高于默认值 (10) 时,自动扩缩容会自动启用。此功能在 Starter(入门)计划中不可用。
您环境的最大连接限制取决于您的Prisma Data Platform 计划
计划 | 最大连接限制 |
---|---|
Starter | 10 |
Pro | 100 |
Business | 1000 |
Enterprise(企业) | 联系我们 |