-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
[fix](coordinator) Fix wrong bucket assignments by coordinator #45365
Conversation
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
run buildall |
clang-tidy review says "All clean, LGTM! 👍" |
TeamCity be ut coverage result: |
TPC-H: Total hot run time: 40332 ms
|
TPC-DS: Total hot run time: 198696 ms
|
ClickBench: Total hot run time: 31.68 s
|
run buildall |
TPC-H: Total hot run time: 39652 ms
|
TPC-DS: Total hot run time: 195620 ms
|
ClickBench: Total hot run time: 33.29 s
|
PR approved by at least one committer and no changes requested. |
PR approved by anyone and no changes requested. |
Split scan ranges evenly into `parallelExecInstanceNum` instances. For a fragment contains co-located join, scan (id = 0) -> join build (id = 2) | scan (id = 1) -> join probe (id = 2) If both of `scan (id = 0)` and `scan (id = 1)` are serial operators, we will plan local exchanger after them: scan (id = 0) -> local exchange -> join build (id = 2) | scan (id = 1) -> local exchange -> join probe (id = 2) And there is another more complicated scenario, for example, `scan (id = 0)` has 10 partitions and 3 buckets which means 3 * 10 tablets and `scan (id = 1)` has 3 buckets and no partition which means 3 tablets totally. If expected parallelism is 8, we will get a serial scan (id = 0) and a non-serial scan (id = 1). For this case, we will plan another plan with local exchange: scan (id = 0) -> join build (id = 2) | scan (id = 1) -> local exchange -> join probe (id = 2)
…nator #45365 (#45401) Cherry-picked from #45365 Co-authored-by: Gabriel <[email protected]>
What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
Split scan ranges evenly into
parallelExecInstanceNum
instances.For a fragment contains co-located join,
If both of
scan (id = 0)
andscan (id = 1)
are serial operators, we will plan local exchangerafter them:
And there is another more complicated scenario, for example,
scan (id = 0)
has 10 partitions and3 buckets which means 3 * 10 tablets and
scan (id = 1)
has 3 buckets and no partition which means3 tablets totally. If expected parallelism is 8, we will get a serial scan (id = 0) and a
non-serial scan (id = 1). For this case, we will plan another plan with local exchange:
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)