-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[TEST] Parallelize CollectLeft build phase #19773
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TEST] Parallelize CollectLeft build phase #19773
Conversation
This commit optimizes the `CollectLeft` execution mode in `HashJoinExec` by parallelizing the build-side processing. Previously, `CollectLeft` required the build side to be coalesced into a single partition, creating a performance bottleneck. This optimization removes the single-partition requirement and introduces a new `collect_left_input_parallel` function. This function executes all build-side partitions concurrently, collects their batches, and then populates a shared hash map in parallel using a mutex for synchronization. This change avoids the need for an explicit `CoalescePartitions` operator upstream and leverages available parallelism to significantly speed up the hash join build phase for `CollectLeft` scenarios.
|
Run benchmarks |
|
🤖 |
|
🤖: Benchmark completed Details
|
|
run benchmark tpch tpch_mem |
af0d30f to
63b2366
Compare
|
🤖 |
|
🤖: Benchmark completed Details
|
|
🤖 |
|
🤖: Benchmark completed Details
|
This commit optimizes the
CollectLeftexecution mode inHashJoinExecby parallelizing the build-side processing. Previously,CollectLeftrequired the build side to be coalesced into a single partition, creating a performance bottleneck.This optimization removes the single-partition requirement and introduces a new
collect_left_input_parallelfunction. This function executes all build-side partitions concurrently, collects their batches, and then populates a shared hash map in parallel using a mutex for synchronization.This change avoids the need for an explicit
CoalescePartitionsoperator upstream and leverages available parallelism to significantly speed up the hash join build phase forCollectLeftscenarios.Which issue does this PR close?
Rationale for this change
What changes are included in this PR?
Are these changes tested?
Are there any user-facing changes?