-
Notifications
You must be signed in to change notification settings - Fork 701
Add more description about SHARD_ROW_ID_BITS #21467
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
base: master
Are you sure you want to change the base?
Conversation
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.
Summary of Changes
Hello @qiancai, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
My aim with this pull request was to add more descriptive information regarding the SHARD_ROW_ID_BITS setting, specifically a notice about its value. However, the current patch only includes the addition of a new file, temp.md, containing placeholder text. This seems to be a discrepancy between the stated intent and the actual changes provided in the patch.
Highlights
- File Addition: Added a new file named temp.md containing the text 'This is a test file.'.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
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.
Code Review
This pull request is intended to add more description about SHARD_ROW_ID_BITS
, but the only change is the addition of a file named temp.md
with the content "This is a test file.". This file seems unrelated to the PR's stated purpose and may have been included by mistake. Please remove this file and add the intended documentation changes.
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/gemini review |
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.
Code Review
This pull request adds a detailed explanation of how SHARD_ROW_ID_BITS
works and how to select a value for it. The new content is valuable. I've provided a few suggestions to improve clarity, conciseness, and technical accuracy in the new explanations, following the documentation style guide.
> | ||
> Selection of shard bits (`S`): | ||
> | ||
> - Because the total bits of `_tidb_rowid` is 64, the number of shard bits affects the number of auto-increment bits: when the number of shard bits increases, the number of auto-increment bits decreases, and vice versa. Therefore, you need to balance the randomness of the auto-increment values and the available auto-increment space. |
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.
This sentence contains a minor technical inaccuracy and could be clearer.1 The term 'randomness of the auto-increment values' is misleading, as the auto-increment part is sequential. The randomness comes from the shard bits, which helps scatter the overall _tidb_rowid
. Also, the trade-off happens within the 63 value bits, not the full 64 bits of the integer.2
Style Guide References
> - Because the total bits of `_tidb_rowid` is 64, the number of shard bits affects the number of auto-increment bits: when the number of shard bits increases, the number of auto-increment bits decreases, and vice versa. Therefore, you need to balance the randomness of the auto-increment values and the available auto-increment space. | |
Because the `_tidb_rowid` value is composed of 63 bits (excluding the sign bit), the number of shard bits affects the number of auto-increment bits. When you increase the number of shard bits, the number of auto-increment bits decreases, and vice versa. Therefore, you need to balance the scattering of row IDs with the available auto-increment space. |
Footnotes
|--------|--------|--------------| | ||
| 1 bit | `S` bits | `63-S` bits | | ||
|
||
- The values of the auto-increment bits are stored in TiKV and allocated sequentially. Each time a value is allocated, the next value is incremented by 1. The auto-increment bits ensure that the column values of `_tidb_rowid` are unique globally. When the value of the auto-increment bits is exhausted (that is, when the maximum value is reached), subsequent automatic allocations fail with the error `Failed to read auto-increment value from storage engine`. |
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.
This sentence is a bit long and can be rephrased for better readability and conciseness.1
Style Guide References
- The values of the auto-increment bits are stored in TiKV and allocated sequentially. Each time a value is allocated, the next value is incremented by 1. The auto-increment bits ensure that the column values of `_tidb_rowid` are unique globally. When the value of the auto-increment bits is exhausted (that is, when the maximum value is reached), subsequent automatic allocations fail with the error `Failed to read auto-increment value from storage engine`. | |
The auto-increment bit values are stored in TiKV and allocated sequentially, ensuring global uniqueness for `_tidb_rowid` values. If these bits are exhausted (the maximum value is reached), subsequent allocations fail with the error `Failed to read auto-increment value from storage engine`. |
Footnotes
| 1 bit | `S` bits | `63-S` bits | | ||
|
||
- The values of the auto-increment bits are stored in TiKV and allocated sequentially. Each time a value is allocated, the next value is incremented by 1. The auto-increment bits ensure that the column values of `_tidb_rowid` are unique globally. When the value of the auto-increment bits is exhausted (that is, when the maximum value is reached), subsequent automatic allocations fail with the error `Failed to read auto-increment value from storage engine`. | ||
- The value range of `_tidb_rowid`: the maximum number of bits for the final generated value = shard bits + auto-increment bits, so the maximum value is `(2^63)-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.
The phrasing of this sentence can be improved for clarity.1 The part the maximum number of bits for the final generated value = shard bits + auto-increment bits
is a bit awkward as it's not a real equation. It's better to state the facts more directly.
Style Guide References
- The value range of `_tidb_rowid`: the maximum number of bits for the final generated value = shard bits + auto-increment bits, so the maximum value is `(2^63)-1`. | |
The value of `_tidb_rowid` is determined by the shard bits and the auto-increment bits. The total number of bits for the value is 63, so the maximum value is `(2^63)-1`. |
What is changed, added or deleted? (Required)
Add notice about setting the value of SHARD_ROW_ID_BITS
Which TiDB version(s) do your changes apply to? (Required)
Tips for choosing the affected version(s):
By default, CHOOSE MASTER ONLY so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER.
For details, see tips for choosing the affected versions (in Chinese).
What is the related PR or file link(s)?
Do your changes match any of the following descriptions?