Estamos realizando Citus
benchmarking e nos deparamos com uma situação onde o planejador faz o parallel execution plan
mas durante a execução não parallel workers
são lançados. O cluster possui 3 nós de trabalho, cada um com 2CPUs em execução no Centos. Qual pode ser a razão por trás disso?
-> Finalize Aggregate (cost=76650.31..76650.32 rows=1 width=32) (actual time=174741.832..174741.999 rows=1 loops=1)
-> Gather (cost=76650.09..76650.30 rows=2 width=32) (actual time=174741.807..174741.974 rows=1 loops=1)
Workers Planned: 2
Workers Launched: 0
-> Partial Aggregate (cost=75650.09..75650.10 rows=1 width=32) (actual time=174740.490..174740.492 rows=1 loops=
A consulta que estamos usando para benchmarking é
select sum(amount) from tab_dist_1 where id>=49820 and id<=59743292;
Existem duas razões possíveis:
Já estão
max_parallel_workers
em execução quando sua consulta começa a ser executada, portanto, não há mais slots de trabalho paralelo disponíveis. Também pode haver outros processos em segundo plano em execução; o limite total para todos os processos em segundo plano émax_worker_processes
.Você executa a consulta usando o driver JDBC e você (ou alguma ferramenta que você está usando) usa
setMaxRows()
para limitar o número de linhas de resultados, o que desativa a consulta paralela em tempo de execução. Consulte este artigo para obter detalhes.