Skip to content

Commit 41ea155

Browse files
authored
Add more description about SHARD_ROW_ID_BITS (#21467) (#21597)
1 parent dddf2bd commit 41ea155

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

shard-row-id-bits.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,22 @@ To mitigate the hot spot issue, you can configure `SHARD_ROW_ID_BITS`. The row I
1717
- `SHARD_ROW_ID_BITS = 6` indicates 64 shards
1818
- `SHARD_ROW_ID_BITS = 0` indicates the default 1 shard
1919

20+
When you set `SHARD_ROW_ID_BITS = S`, the structure of `_tidb_rowid` is as follows:
21+
22+
| Sign bit | Shard bits | Auto-increment bits |
23+
|--------|--------|--------------|
24+
| 1 bit | `S` bits | `63-S` bits |
25+
26+
- 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`.
27+
- 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`.
28+
29+
> **Note:**
30+
>
31+
> Selection of shard bits (`S`):
32+
>
33+
> - 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.
34+
> - The best practice is to set the shard bits to `log(2, x)`, where `x` is the number of TiKV nodes in the cluster. For example, if there are 16 TiKV nodes in a TiDB cluster, it is recommended to set the shard bits to `log(2, 16)`, which equals `4`. After all Regions are evenly scheduled to each TiKV node, the load of bulk writes can be evenly distributed to different TiKV nodes to maximize resource utilization.
35+
2036
<CustomContent platform="tidb">
2137

2238
For details on the usage, see [the Troubleshoot Hotspot Issues guide](/troubleshoot-hot-spot-issues.md#use-shard_row_id_bits-to-process-hotspots).

0 commit comments

Comments
 (0)