-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
VReplication: Ensure that RowStreamer uses optimal index when possible #13893
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Review ChecklistHello reviewers! 👋 Please follow this checklist when reviewing this Pull Request. General
Tests
Documentation
New flags
If a workflow is added or modified:
Backward compatibility
|
vitess-bot
bot
added
NeedsDescriptionUpdate
The description is not clear or comprehensive enough, and needs work
NeedsIssue
A linked issue is missing for this Pull Request
NeedsWebsiteDocsUpdate
What it says
labels
Aug 30, 2023
This is the index that should contain the columns specified in the ORDER BY clause and allows us to leverage the record ordering in the index and avoid having to do a filesort. Signed-off-by: Matt Lord <[email protected]>
mattlord
force-pushed
the
rowstreamer_force_index
branch
from
August 30, 2023 04:37
1211aff
to
7e10b5d
Compare
Signed-off-by: Matt Lord <[email protected]>
Signed-off-by: Matt Lord <[email protected]>
mattlord
added
Type: Enhancement
Logical improvement (somewhere between a bug and feature)
Component: VReplication
and removed
NeedsDescriptionUpdate
The description is not clear or comprehensive enough, and needs work
NeedsWebsiteDocsUpdate
What it says
labels
Aug 31, 2023
Signed-off-by: Matt Lord <[email protected]>
mattlord
requested review from
deepthi,
harshit-gangal,
systay,
shlomi-noach and
rohit-nayak-ps
as code owners
September 6, 2023 17:16
Signed-off-by: Matt Lord <[email protected]>
Signed-off-by: Matt Lord <[email protected]>
Signed-off-by: Matt Lord <[email protected]>
rohit-nayak-ps
approved these changes
Sep 10, 2023
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
Signed-off-by: Matt Lord <[email protected]>
shlomi-noach
approved these changes
Oct 1, 2023
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.
Makes perfect sense, with one minor comment.
Signed-off-by: Matt Lord <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
In this PR we add a
force index
clause (and not alwaysprimary
) when we have PK or equivalent columns covered by an existing index, and we then use all of those columns in theORDER BY
clause. So it’s for the low levelrowstreamer
source query we apply at themysqld
layer to get rows for streaming, before applying the vreplication filters in thevstreamer
layer in the source tablet and finally sending the matching rows on to thevcopier
in the target tablet. Using an index for theORDER BY
clause there in themysqld
layer is what allows us to immediately start streaming rows rather than having to read every matching row and sort them all on disk with a filesort inmysqld
before thevstreamer
gets any rows back frommysqld
/rowstreamer
.Related Issue(s)
Checklist