AUTO_RANDOM
列值的具体结构如下:
总位数 | 符号位 | 保留位 | 分片位 | 自增位 |
---|---|---|---|---|
64 bits | 0/1 bit | (64-R) bits | S bits | (R-1-S) bits |
- 符号位的长度由该列是否存在
UNSIGNED
属性决定:存在则为0
,否则为1
。 - 保留位的长度为
64-R
,保留位的内容始终为0
。 - 分片位的内容通过计算当前事务的开始时间的哈希值而得。要使用不同的分片位数量(例如 10),可以在建表时指定
AUTO_RANDOM(10)
。 - 自增位的值保存在存储引擎中,按顺序分配,每次分配完值后会自增 1。自增位保证了
AUTO_RANDOM
列值全局唯一。