-
Notifications
You must be signed in to change notification settings - Fork 5.8k
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
statistics: ease the impact of stats feedback on cluster (#15503) #18772
Merged
eurekaka
merged 3 commits into
pingcap:release-4.0
from
ti-srebot:release-4.0-a99fdc098cb3
Jul 27, 2020
Merged
statistics: ease the impact of stats feedback on cluster (#15503) #18772
eurekaka
merged 3 commits into
pingcap:release-4.0
from
ti-srebot:release-4.0-a99fdc098cb3
Jul 27, 2020
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
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
/run-all-tests |
ti-srebot
added
sig/execution
SIG execution
component/statistics
epic/query-feedback-GA
type/4.0-cherry-pick
type/enhancement
The issue or PR belongs to an enhancement.
labels
Jul 24, 2020
/run-all-tests |
lzmhhh123
reviewed
Jul 27, 2020
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
qw4990
reviewed
Jul 27, 2020
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
ti-srebot
added
status/LGT2
Indicates that a PR has LGTM 2.
and removed
status/LGT1
Indicates that a PR has LGTM 1.
labels
Jul 27, 2020
qw4990
approved these changes
Jul 27, 2020
/merge |
ti-srebot
added
the
status/can-merge
Indicates a PR has been approved by a committer.
label
Jul 27, 2020
/run-all-tests |
@ti-srebot merge failed. |
/merge |
/run-all-tests |
@ti-srebot merge failed. |
/run-common-test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
component/config
component/statistics
epic/query-feedback-GA
sig/execution
SIG execution
status/can-merge
Indicates a PR has been approved by a committer.
status/LGT2
Indicates that a PR has LGTM 2.
type/enhancement
The issue or PR belongs to an enhancement.
type/4.0-cherry-pick
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.
cherry-pick #15503 to release-4.0
What problem does this PR solve?
Fix #17478
Problem Summary:
Statistics feedback would impose periodical read/write burden on the database. Each TiDB would dump the feedbacks collected on this instance into TiKV every 10 mins, and the stats owner TiDB instance would read the feedbacks dumped every 15 seconds. If the stats owner TiDB finds there are new feedbacks from TiKV, it would merge the feedbacks with statistics in cache, then dump all these updated statistics into TiKV. This dump operation is pretty heavy if there are bunches of feedbacks on bunches of columns/indexes, since it can be treated as a light-weight ANALYZE on a lot of tables.
What is changed and how it works?
What's Changed:
First, reduce the amount of feedbacks generated on each TiDB by:
MaxQueryFeedbackCount
;Second, merge multiple insert/update/delete statements of dumping statistics into single ones, to reduce the unnecessary function call stacks and RPCs.How it Works:
Obviously, the first change can flow-control the statistics feedback mechanism fundamentally, but we may lose some stats accuracy incurred by feedback theoretically.
The second change combines several small transactions into a big one, since we have controlled the amount of feedbacks using the first change, I guess this bigger transaction is supposed not to be a problem. However, the bigger transaction should have higher chances of write conflict, and it makes code harder to read, so I haven't made up my mind to keep it or not actually.Related changes
Check List
Tests
Side effects
Release note