Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置postgresql select中的工作进程数?_Postgresql - Fatal编程技术网

如何设置postgresql select中的工作进程数?

如何设置postgresql select中的工作进程数?,postgresql,Postgresql,如标题所述,我可以运行以下查询: EXPLAIN ANALYZE SELECT * FROM accounts WHERE screen_name='realDonaldTrump'; 并获得输出: Gather (cost=1000.00..87090.59 rows=1 width=122) (actual time=369.168..383.632 rows=1 loops=1) Workers Planned: 2 Workers Launched: 2 ->

如标题所述,我可以运行以下查询:

EXPLAIN ANALYZE SELECT * FROM accounts WHERE screen_name='realDonaldTrump';
并获得输出:

Gather  (cost=1000.00..87090.59 rows=1 width=122) (actual time=369.168..383.632 rows=1 loops=1)
   Workers Planned: 2
   Workers Launched: 2   
->  Parallel Seq Scan on accounts  (cost=0.00..86090.49 rows=1 width=122) (actual time=312.741..326.849 rows=0 loops=3)
        Filter: ((screen_name)::text = 'realDonaldTrump'::text)
        Rows Removed by Filter: 1156140 
Planning Time: 0.065 ms 
Execution Time: 383.649 ms
Gather  (cost=1000.00..87090.59 rows=1 width=122) (actual time=348.717..403.839 rows=1 loops=1)
  Workers Planned: 2
  Workers Launched: 2
  ->  Parallel Seq Scan on accounts  (cost=0.00..86090.49 rows=1 width=122) (actual time=311.207..324.566 rows=0 loops=3)
        Filter: ((screen_name)::text = 'realDonaldTrump'::text)
        Rows Removed by Filter: 1156140
Planning Time: 0.563 ms
Execution Time: 403.856 ms
现在我的问题是,如何将此查询转换为使用更多或更少的工作人员?我在网上找到了一些参数,如
max\u parallel\u workers
,但我无法将它们合并到查询中。我正在pycharm->postgresql控制台运行此查询

编辑: 从注释运行查询后,这是输出:

Gather  (cost=1000.00..87090.59 rows=1 width=122) (actual time=369.168..383.632 rows=1 loops=1)
   Workers Planned: 2
   Workers Launched: 2   
->  Parallel Seq Scan on accounts  (cost=0.00..86090.49 rows=1 width=122) (actual time=312.741..326.849 rows=0 loops=3)
        Filter: ((screen_name)::text = 'realDonaldTrump'::text)
        Rows Removed by Filter: 1156140 
Planning Time: 0.065 ms 
Execution Time: 383.649 ms
Gather  (cost=1000.00..87090.59 rows=1 width=122) (actual time=348.717..403.839 rows=1 loops=1)
  Workers Planned: 2
  Workers Launched: 2
  ->  Parallel Seq Scan on accounts  (cost=0.00..86090.49 rows=1 width=122) (actual time=311.207..324.566 rows=0 loops=3)
        Filter: ((screen_name)::text = 'realDonaldTrump'::text)
        Rows Removed by Filter: 1156140
Planning Time: 0.563 ms
Execution Time: 403.856 ms
编辑2: 在处理postgresql.conf文件并更改每个聚集的
max\u parallel\u workers\u
max\u parallel\u workers
的值,然后重新启动postgres之后,没有任何更改。仅在我运行此查询之后:

设置每个聚集的最大并行工作线程数=4


初始sql查询是否使用请求的4个工作线程运行。

您可以增加每个聚集的最大并行工作线程数,也可以

ALTER TABLE accounts SET (parallel_workers = 6);

为什么不在
屏幕\u name
上创建一个索引,而不是在查询内部。您可以将其设置为会话中的设置,也可以将其设置为数据库/整个集群的设置。我正在做学校作业,我们正在学习索引。我可以得到一个提示,说明在哪里可以更改这些设置吗?我使用pgAdmin更改了accounts表中paralel_workers的值,但查询仍使用2个Worker而不是指定的数目执行。如果您想了解索引,请创建索引并观察结果,而不是使用更多Worker进行“暴力攻击”。我理解sql查询,因为它很简单,但当我运行它时,使用的工人(在问题的查询中)仍然只有2人,而不是6人。我在pgAdmin的任何地方都找不到
max\u parallel\u workers\u per\u gather
,或者我应该去别处看看吗?这是
postgresql.conf
中的配置参数。运行
ALTER TABLE
后,是否可以编辑问题并为查询添加
EXPLAIN(ANALYZE)
输出?使用输出编辑问题。