Boo*_*oom 4 postgresql parallel-processing
我已经用简单的查询测试了并行性,但我不明白结果。
我检查了以下参数pg_settings:
max_parallel_workers = 8
max_parallel_workers_per_gather = 2
Run Code Online (Sandbox Code Playgroud)
我运行以下查询(该表包含约 16M 行):
explain analyze
select *
from tbl
where value<>-1
Run Code Online (Sandbox Code Playgroud)
结果:
Gather (cost=1000.00 .. 1136714.86 rows=580941 width=78 actual time=0.495..3057.813 rows = 587886 loops=1)
workers planned: 2
workers launched: 2
-> parallel seq scan on tbl (cost=0.00..10776.76 rows=242059 width=718) (actual time=0.095..2968.77 rows=195962 loops=3)
filter: (value<>-1::integer)
rows removed by filter: 5389091
plain time: 0.175ms
exection time: 3086.243ms
Run Code Online (Sandbox Code Playgroud)
max_parallel_workers和 和有什么不一样max_parallel_workers_per_gather?何时使用每个值?max_parallel_workers限制整个数据库集群中可以同时活动的并行工作进程的数量。它必须小于或等于max_worker_processes。
max_parallel_workers_per_gather限制可用于单个查询的并行工作进程的数量。
这个想法是限制并行查询的资源,同时确保没有一个查询可以占用所有资源。