跳到主要内容

连接池

信息

要了解有关连接池的更多信息,请务必查看 Prisma 的数据指南,其中全面概述了什么是连接池,它旨在解决什么问题以及它是如何工作的。

Accelerate 默认提供内置连接池。通过使用 Accelerate,您可以获得连接池的优势,而无需配置任何内容。数据库连接的有效管理使数据库能够处理更多查询,而不会耗尽可用的数据库连接,从而使您的应用程序更具可扩展性。

但是,在某些情况下,进一步配置连接池可能有利于优化应用程序的性能。

注意

本文档重点介绍 Prisma Accelerate 的连接池功能。有关 Prisma ORM 内部连接池的更多信息,请参阅我们的 ORM 连接池文档

Accelerate 中的连接池

默认情况下,Accelerate 的连接限制为 10。这意味着 Prisma Accelerate 最多会为 Accelerate 中使用的每个 Prisma Schema 打开 10 个数据库连接到您的数据库。对于 Starter 计划,这也是最大连接限制。

在大多数情况下,此连接限制已足够。但是,在高流量或重计算环境中,您可能需要增加此值。如果您的项目在 Pro 计划上,则最大连接限制为 100。对于 Business 计划 项目,最大值为 1000

配置连接池大小

不使用 Prisma Accelerate 时,您可以通过连接字符串配置 Prisma ORM 的连接池。当使用 Prisma Accelerate 时,此功能不可用。相反,您可以通过 Accelerate 设置上的 Connection limit 设置在您的平台项目中配置连接池大小。

自动缩放

自动缩放允许 Accelerate 根据应用程序的流量动态分配资源。当持续使用接近当前连接限制时,Accelerate 将开始分配新资源以处理增加的负载。如果流量持续上升,Accelerate 将进一步向上扩展。相反,当流量减少时,Accelerate 将相应地向下扩展。

为了提供更多背景信息,Accelerate 通过在多个查询引擎实例之间分配总可用连接来水平扩展您的环境。例如

  • 如果您的环境连接限制设置为 1000,Accelerate 将扩展到多个查询引擎实例(例如,100 个实例)。
  • 然后,每个查询引擎实例都分配了总连接数的一部分——在本例中,每个实例 10 个连接。
  • 这就是为什么单个查询引擎实例报告的连接限制为 10,即使环境的总连接限制为 1000。

这种扩展机制确保您的应用程序可以通过增加查询引擎实例的数量来处理更高的流量负载,同时保持连接池管理的高效和分布式。

当 Accelerate 连接限制设置为高于默认值时,将启用自动缩放。此功能在 Starter 计划中不可用。

您的 Accelerate 连接限制的最大值取决于您的 Prisma 数据平台计划

计划最大连接限制
Starter10
Pro100
Business1000
Enterprise联系我们

配置连接池超时

连接池超时是查询在等待从 Accelerate 的内部连接池获取连接时将阻塞的最大秒数。如果并发请求数超过连接限制,则会发生这种情况,从而导致其他请求排队,直到有空闲连接可用。如果在池超时内没有空闲连接可用,则会抛出异常。可以通过将值设置为 0 来禁用连接池超时。

与连接池大小类似,您也可以通过数据库连接字符串配置连接池超时。要调整此值,您可以将 pool_timeout 参数添加到数据库连接字符串。

例如

postgresql://user:password@localhost:5432/db?connection_limit=10&pool_timeout=20
信息

pool_timeout 的默认值为 10 秒。

配置查询限制

使用 Prisma Accelerate 时,您可以从启用 Accelerate 的项目环境中的 Settings 选项卡配置最小和最大查询响应大小、查询持续时间和事务限制。

查询超时限制

Accelerate 为每个查询设置了 10 秒 的默认全局超时,可使用标有 Query duration 的滑块进行配置,具体取决于您的订阅计划

计划StarterProBusiness
查询超时最多 10 秒最多 20 秒最多 60 秒

有关更多信息,请参阅故障排除指南和我们的定价页面

警告

虽然您可以增加查询超时,但如果数据库查询时间超过 10 秒,建议您检查并优化数据库查询。这有助于减轻底层数据库的压力,因为长时间运行的查询通常表明需要优化。在故障排除指南中了解更多信息。

交互式事务查询超时限制

Accelerate 为每个交互式事务设置了 15 秒 的默认全局超时,可使用标有 Transaction duration 的滑块进行配置,具体取决于您的订阅计划

计划StarterProBusiness
交互式事务限制最多 15 秒最多 30 秒最多 90 秒

有关更多信息,请参阅故障排除指南和我们的定价页面

当您在 Prisma 控制台中设置更高的交互式事务超时时,您还必须通过 timeout 事务选项在交互式事务查询中指定匹配的 timeout 值。否则,事务仍将以较低的默认值超时(例如,在未指定超时值时限制为 5 秒)。以下是如何在代码中设置 30 秒超时的示例

await prisma.$transaction(
async (tx) => {
// Your queries go here
},
{
timeout: 30000, // 30s
}
);
警告

虽然您可以增加交互式事务超时限制,但如果数据库事务时间超过 15 秒,建议您检查并优化数据库事务。长时间运行的事务会对性能产生负面影响,并且通常表明需要优化。在故障排除指南中了解更多信息,并查看我们文档中交互式事务部分中的警告

响应大小限制

Accelerate 具有 5MB 的默认全局响应大小限制,可以使用标有 Response size 的滑块进行配置,具体取决于您的订阅计划

计划StarterProBusiness
查询大小最多 5MB最多 10MB最多 20MB

有关更多信息,请参阅故障排除指南和我们的定价页面

警告

虽然您可以增加查询响应大小,但建议将数据检索限制为您实际需要的内容。这可以提高数据库性能,减轻数据库压力,并使您的前端应用程序更具响应性。大小超过 5 MB 的查询通常表明需要优化。在故障排除指南中了解更多信息。