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