# SCHEMA 的设计 - 聚簇表与非聚簇表（E）

+ `SHARD_ROW_ID_BITS`
  + 非聚簇表 NONCLUSTERED, TiDB 会使用一个隐式的自增 rowid, 造成写入热点。
  + SHARD_ROW_ID_BITS 通过调整隐式生成的 _tidb_rowid 的高位，从而更容易拆分不同的 region 来打散热点。
    + SHARD_ROW_ID_BITS = 4 表示 16 个分片
    + SHARD_ROW_ID_BITS = 5 表示 32 个分片
  + 一般使用 SHARD_ROW_ID_BITS 的同时，会配合使用 PRE_SPLIT_REGIONS。在建表后即会将表拆分成 2^(PRE_SPLIT_REGIONS) 个 Region
+ e.g: 创建一个非聚簇表，并添加 SHARD_ROW_ID_BITS 来打散数据，并在建表后将表预切分为 4 个 Region
+ e.g: 修改表的打散随机位到 5 

```
CREATE TABLE t (c int PRIMARY KEY NONCLUSTERED) SHARD_ROW_ID_BITS = 4 pre_split_regions = 2;
ALTER TABLE t SHARD_ROW_ID_BITS = 5;
```
-------------------------------------------------------------

SHARD_ROW_ID_BITS

对于非聚簇表 NONCLUSTERED，TiDB 会使用一个隐式的自增 rowid。大量执行 INSERT 插入语句时会把数据集中写入单个 Region，造成写入热点。

