Timescale Cloud:性能、扩展、企业级

自托管产品

MST

当您连接到数据库时,会消耗服务器资源。如果您的数据库连接数很多,可能会消耗大量服务器资源。解决这个问题的一种方法是使用连接池,它允许您拥有大量连接,同时保持服务器资源使用率较低。您的数据库客户端连接越多,连接池就越有用。

默认情况下,PostgreSQL 为每个到服务器的连接创建一个独立的后端进程。连接池使用名为 PGBouncer 的工具将多个连接池化到一个后端进程。PGBouncer 会自动交错客户端查询,以更有效地利用有限数量的后端连接,从而降低服务器资源使用率并提高整体性能。

不使用连接池时,数据库连接由 PostgreSQL 后端进程直接处理,每个连接一个进程

Connection pooling - pooling disabled

添加连接池后,所需的后端连接数会减少。这会释放服务器资源用于其他任务,例如磁盘缓存

Connection pooling - pooling enabled

连接池允许您同时处理多达 5000 个数据库客户端连接。您可以根据可用的 CPU 核心数来计算可以处理多少连接。每个核心至少应该有一个连接,但要确保您没有使每个核心过载。一个理想的连接数目标是可用 CPU 核心数的 3 到 5 倍,具体取决于您的工作负载。

有几种不同的池模式

  • 事务(默认)
  • 会话
  • 语句

这是默认的连接池模式。它允许每个客户端连接在单个事务期间轮流使用后端连接。当事务提交时,后端连接会返回到池中,下一个等待的客户端连接会立即重用相同的连接。只要大多数事务执行迅速,这就能为查询提供快速响应时间。这是最常用的模式。

此模式会保持客户端连接,直到客户端断开连接。当客户端断开连接时,服务器连接会返回到连接池的空闲连接列表中,等待下一个客户端连接。客户端连接在 TCP 级别被接受,但它们的查询只有在另一个客户端断开连接并释放后端连接回池中时才能继续。当您需要为传入连接设置等待队列,同时保持服务器内存使用率低时,此模式很有用。但是,在大多数常见场景中它并不常用,因为后端连接回收速度非常慢。

此模式与事务池模式类似,不同之处在于它不允许运行完整事务,而是在每个数据库语句(例如 SELECT、INSERT、UPDATE、DELETE)之后循环服务器端连接。此模式不允许包含多个 SQL 语句的事务。此模式最适合使用分片前端代理的专业工作负载。

您可以从 TimescaleDB 托管服务门户设置连接池。请确保您已创建要添加连接池的服务。

  1. MST 门户 中,导航到 服务 列表,然后单击要添加连接池的服务名称。
  2. 服务概览 页面中,导航到 连接池 选项卡。当您创建了一些连接池后,它们会在此处显示。
  3. 单击 添加连接池 以创建新连接池。
  4. 创建新连接池 对话框中,使用以下设置
    • 连接池名称 字段中,为您的新连接池键入一个名称。此名称将成为您池化客户端连接的数据库 dbname 连接参数。
    • 数据库 字段中,选择要连接的数据库。每个连接池只能连接到一个数据库。
    • 连接池模式 字段中,选择要使用的 连接池模式
    • 连接池大小 字段中,选择此连接池在任何给定时间可以使用的最大服务器连接数。
    • 用户名 字段中,选择用于连接数据库的数据库用户名。
  5. 单击 创建 以创建连接池,并在列表中查看新连接池的详细信息。您可以单击连接池详细信息旁边的 信息 以查看更多信息,包括 URI 和端口详细信息。
注意

池化服务器使用与常规服务器不同的端口号。这允许您同时使用池化和非池化连接。

关键词

在此页面上发现问题?报告问题 或 编辑此页面 在 GitHub 中。