## モジュール 4: ホットスポットを避けるためにAUTO_INCREMENTの代わりにAUTO_RANDOMを使用

+ TiDBのような分散データベースでは、データはリージョンに分割され、複数のストレージノード（TiKVノード）に分散されます。

+ 主キーとして`AUTO_INCREMENT`を使用すると、以下の問題が発生する可能性があります：
  + `AUTO_INCREMENT`を使用すると、IDは順次（1、2、3、4、...）になります
  + 新しい挿入はすべて最新のIDが保存されている同じリージョンに移動します
  + これにより、1つのストレージノードがほとんどの書き込みトラフィックを処理する「ホットスポット」が作成されます
  + 残りのストレージノードは十分に活用されません
  + このボトルネックは書き込みスループットを大幅に制限する可能性があります

+ `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
  ...
  ```
