client_backend 与parallel_worker?

Boo*_*oom 3 postgresql

我在跑:

select *
from pg_stat_activity
Run Code Online (Sandbox Code Playgroud)

它显示了 2 行具有相同的查询内容(在query字段下),并且在active状态下,

但一行显示client_backed( backend_type),另一行显示parallel_worker( backend_type)

  1. 为什么我有 2 个相同查询的实例?(我在我的应用程序中只运行了一个查询)
  2. client_backed和 和有什么不一样parallel_worker

Lau*_*lbe 6

从 PostgreSQL v10 开始,查询有并行处理:

如果优化器认为这是一个好主意并且有足够的资源,PostgreSQL 将启动并行工作进程,与您的客户端后端一起执行查询。最终,客户端后端将从并行工作人员那里收集所有信息并完成查询处理。

这会加快查询处理速度,但会占用数据库服务器上的更多资源。控制这一点的参数包括max_parallel_workers,限制并行工作进程的总限制,以及max_parallel_workers_per_gather限制单个查询的并行工作进程的数量。