如何设置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)
输出?使用输出编辑问题。