SHARD_ROW_ID_BITS
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.
Concept
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 = 4
indicates 16 shardsSHARD_ROW_ID_BITS = 6
indicates 64 shardsSHARD_ROW_ID_BITS = 0
indicates the default 1 shard
Examples
CREATE TABLE
:CREATE TABLE t (c int) SHARD_ROW_ID_BITS = 4;
ALTER TABLE
:ALTER TABLE t SHARD_ROW_ID_BITS = 4;