diff --git a/auto-random.md b/auto-random.md index 0cca91908ec8..1388741472b3 100644 --- a/auto-random.md +++ b/auto-random.md @@ -114,8 +114,9 @@ TiDB 自动分配的 `AUTO_RANDOM(S, R)` 列值共有 64 位: |-------------|--------|------------| | `64-R` bits | `S` bits | `R-S` bits | -- 是否有符号位取决于该列是否存在 `UNSIGNED` 属性。 +- 是否有符号位取决于该列是否存在 `UNSIGNED` 属性。`AUTO_RANDOM` 列隐式分配的值始终为正数;对于有符号列,其符号位始终为 `0`,无符号列没有符号位。显式插入的值不适用该隐式分配规则。 - 保留位的长度为 `64-R`,保留位的内容始终为 `0`。 +- 自增位至少为 27 位。对于有符号列,必须满足 `R-1-S >= 27`;对于无符号列,必须满足 `R-S >= 27`。 - 分片位的内容通过计算当前事务的开始时间的哈希值而得。要使用不同的分片位数量(例如 10),可以在建表时指定 `AUTO_RANDOM(10)`。 - 自增位的值保存在存储引擎中,按顺序分配,每次分配完值后会自增 1。自增位保证了 `AUTO_RANDOM` 列值全局唯一。当自增位耗尽后,再次自动分配时会报 `Failed to read auto-increment value from storage engine` 的错误。 - 关于取值范围:最终生成值包含的最大位数 = 分片位 + 自增位。有符号位的列的取值范围是 `[-(2^(R-1))+1, (2^(R-1))-1]`。无符号位的列的取值范围是 `[0, (2^R)-1]`。