-
Notifications
You must be signed in to change notification settings - Fork 5.9k
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
util, executor: use a individual rowContainer for each probeWorker in HashJoinExec #27577
Conversation
[REVIEW NOTIFICATION] This pull request has been approved by:
To complete the pull request process, please ask the reviewers in the list to review by filling The full list of commands accepted by this bot can be found here. Reviewer can indicate their review by submitting an approval review. |
3377cae
to
6cd3123
Compare
3a9f793
to
051a282
Compare
The failed cases: TestShowGrantsForCurrentUserUsingRole and TestIterator have nothing to do with this commit. |
util/chunk/row_container.go
Outdated
// spillError stores the error when spilling. | ||
spillError error |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we put spillError
into rowContainerRecord
? When there is a spilling error, all goroutions can observe the error and exit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
spillError
is of the interface
type, it seems we do not need to put it in rowContainerRecord
666efe6
to
7887962
Compare
7887962
to
432cf28
Compare
@@ -115,7 +125,7 @@ func (c *hashRowContainer) GetMatchedRowsAndPtrs(probeKey uint64, probeRow chunk | |||
return | |||
} | |||
if !ok { | |||
c.stat.probeCollision++ | |||
atomic.AddInt64(&c.stat.probeCollision, 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Guess this can be a new hotspot. Myabe we can let user control the HashTalbe's bucket size to fix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, the collision should be small probability event
/run-common-test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
ab33b45
to
2c15078
Compare
/merge |
This pull request has been accepted and is ready to merge. Commit hash: 2c15078
|
@XuHuaiyu: Your PR was out of date, I have automatically updated it for you. At the same time I will also trigger all tests for you: /run-all-tests If the CI test fails, you just re-trigger the test that failed and the bot will merge the PR for you after the CI passes. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository. |
What problem does this PR solve?
Issue Number: close #27576
Problem Summary:
What is changed and how it works?
Proposal: xxx
What's Changed:
Use an individual rowContainer for each probeWorker in HashJoinExec to eliminate the contention when accessing rowContainer.Mutex.
How it Works:
Check List
Tests
Side effects
N/A
Documentation
N/A
Release note