首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解跨会话的PostgreSQL并行查询的工作池中还剩下多少并行工作进程?

了解跨会话的PostgreSQL并行查询的工作池中还剩下多少并行工作进程?
EN

Stack Overflow用户
提问于 2020-02-28 03:39:43
回答 2查看 1.2K关注 0票数 1

假设我的PostgreSQL数据库配置中有一个由4个并行工作进程组成的池。我还有两个会话。

在session#1中,SQL当前正在执行,我的计划员随机选择为该查询启动2个工作进程。

那么,在session#2中,我如何知道我的工作人员池减少了2个呢?

EN

回答 2

Stack Overflow用户

发布于 2020-02-28 15:44:53

您可以计算并行worker后端:

代码语言:javascript
复制
SELECT current_setting('max_parallel_workers')::integer AS max_workers,
       count(*) AS active_workers
FROM pg_stat_activity
WHERE backend_type = 'parallel worker';
票数 2
EN

Stack Overflow用户

发布于 2020-02-28 08:09:25

在内部,Postgres使用两个名为parallel_register_countparallel_terminate_count的变量来跟踪有多少并行工作线程处于活动状态。两者之间的区别在于活动的并行工作线程的数量。See comment in in the source code.

在注册新的并行工作线程之前,将根据max_parallel_workers设置in the source code here检查此编号。

不幸的是,我不知道有什么直接的方法可以将这些信息暴露给用户。

您将看到查询计划中耗尽限制的效果。您可以在通常并行化的大表上使用SELECT查询尝试EXPLAIN ANALYZE。您将看到使用的工人比计划的工人更少。The manual:

可同时存在的后台工作线程总数受max_worker_processesmax_parallel_workers的限制。因此,运行并行查询的工作进程可能比计划的少,甚至根本没有工作进程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60440628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档