This document introduces the
SHARD_ROW_ID_BITS table attribute, which is used to set the number of bits of the shards after the implicit
_tidb_rowid is sharded.
For the tables with a non-integer primary key or no primary key, TiDB uses an implicit auto-increment row ID. When a large number of
INSERT operations are performed, the data is written into a single Region, causing a write hot spot.
To mitigate the hot spot issue, you can configure
SHARD_ROW_ID_BITS. The row IDs are scattered and the data are written into multiple different Regions. But setting an overlarge value might lead to an excessively large number of RPC requests, which increases the CPU and network overheads.
SHARD_ROW_ID_BITS = 4indicates 16 shards
SHARD_ROW_ID_BITS = 6indicates 64 shards
SHARD_ROW_ID_BITS = 0indicates the default 1 shard
CREATE TABLE t (c int) SHARD_ROW_ID_BITS = 4;
ALTER TABLE t SHARD_ROW_ID_BITS = 4;