UUID v7 於 RFC 9562(2024 年 5 月)中標準化,解決了 UUID v4 的主要弱點:資料庫索引效能不佳。
UUID v4(隨機)
UUID v4 使用 122 個隨機位元和 6 個固定位元。這保證了無需協調即可實現唯一性,但產生的 ID 會隨機散佈在時間軸上。當用作資料庫中的 B-tree 主鍵時,隨機 ID 會導致頁面分割和索引碎片化,降低寫入效能。
UUID v7(時間排序)
UUID v7 使用 48 位元的 Unix 毫秒時間戳,後跟隨機位元。時間戳前綴使 UUID 能夠自然地按建立時間排序,解決了 B-tree 碎片化問題。金鑰仍然是全域唯一的,且無需協調即可產生。
比較
| | UUID v4 | UUID v7 | |---|---------|---------| | 標準 | RFC 9562 | RFC 9562 | | 可排序 | 否 | 是(依時間) | | 資料庫效能 | 差 | 好 | | 唯一 | 是 | 是 | | 洩露時間戳 | 否 | 是(毫秒精度) |
建議:資料庫主鍵使用 UUID v7,當您明確不希望洩露建立時間時使用 UUID v4。在我們的 UUID 產生器中試用兩者。