正如标题所述,我可以运行以下查询:
EXPLAIN ANALYZE SELECT * FROM accounts WHERE screen_name='realDonaldTrump';
Run Code Online (Sandbox Code Playgroud)
并得到输出:
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
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何转换此查询以使用更多或更少的工作人员?在网上我找到了一些参数,例如max_parallel_workers,但我无法将它们合并到查询中。我正在从 pycharm -> postgresql 控制台运行此查询。
编辑:从评论运行查询后,这是输出:
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
Run Code Online (Sandbox Code Playgroud)
编辑2:在搞乱了 postgresql.conf 文件并更改max_parallel_workers_per_gather和 的值max_parallel_workers然后重新启动 postgres 后,没有任何变化。直到后来我运行了这个查询之后:
SET max_parallel_workers_per_gather = 4;
初始 sql 查询是否与请求的 4 个工作线程一起运行。
你可以增加max_parallel_workers_per_gather,或者你可以
ALTER TABLE accounts SET (parallel_workers = 6);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6612 次 |
| 最近记录: |