## 模块4：使用AUTO_RANDOM而不是AUTO_INCREMENT来避免热点

+ 在像TiDB这样的分布式数据库中，数据被分成区域并分布在多个存储节点（TiKV节点）上。

+ 使用`AUTO_INCREMENT`作为主键可能会导致以下问题：
  + 使用`AUTO_INCREMENT`时，ID是连续的（1、2、3、4、...）
  + 新的插入都转到存储最新ID的同一区域
  + 这创建了一个"热点"，其中一个存储节点处理大部分写入流量
  + 其余存储节点未得到充分利用
  + 这个瓶颈可能会严重限制写入吞吐量

+ `AUTO_RANDOM`是解决方案：
  + `AUTO_RANDOM`生成非连续、分布式的ID
  + 分片位有助于在不同区域间分布写入
  + INSERT工作负载在所有存储节点间平衡
  + 这提高了高并发场景下的写入吞吐量和可扩展性

  ```bash
  rm -f DemoJdbcAutoRandom.class
  javac -cp mysql-connector-j-9.1.0.jar DemoJdbcAutoRandom.java       
  sleep 1
  java -cp :mysql-connector-j-9.1.0.jar DemoJdbcAutoRandom
  ```

  ```output
  ...
  AUTO_RANDOM IDs (distributed to avoid hotspots):
  288230376151711745
  1441151880758558730
  3746994889972252677
  4323455642275676162
  4899916394579099654
  4899916394579099655
  6052837899185946628
  7493989779944505347
  7782220156096217097
  8070450532247928840

  AUTO_INCREMENT IDs (sequential, can cause hotspots):
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  ...
  ```
