主要观点:本月早些时候,Postgres 提交了 UUIDv7 的实现,其具有 v4(随机)UUID 的所有优点,且通过当前时间以更确定的顺序生成,在使用 B 树等有序结构插入时性能更好。
关键信息:
- UUIDv7 在每个 Postgres 后端内的随机部分是单调的,12 位子毫秒时间戳分数存储在时间戳之后的“rand_a”空间中,确保了毫秒内的额外单调性,rand_a 位还充当计数器。
- 实现中利用 12 位“rand_a”位的方法是“用增加的时钟精度替换最左边的随机位(方法 3)”,将时间戳精度提高到纳秒级。
- UUIDv7 最初的 48 位编码到毫秒精度的时间戳,Postgres 补丁通过重新利用 12 位随机组件来提高时间戳精度。
- UUIDv7 将成为 Postgres 的重要核心添加,但由于提交延迟,要到 2025 年底的 Postgres 18 才会进入官方版本。
重要细节: - 在测试中,使用 UUIDv7 可使生成的五个对象获得按顺序的 ID,使测试更安全和快速,如在测试 API 列表端点时,无需初始排序。
- 对于单调性的实现,通过特定代码将纳秒级时间戳分数填充到“rand_a”位,增加时间戳精度,同时仍有 62 位随机性可利用,减少碰撞概率。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。