首頁/部落格/UUID v4 與 v7 完全指南:如何選擇正確的 UUID 版本
教學

UUID v4 與 v7 完全指南:如何選擇正確的 UUID 版本

深入比較 UUID v4 和 v7 的差異、優缺點和適用場景。了解為什麼 UUID v7 正在成為新的標準,以及何時該使用哪個版本。

奧特線上工具2026/2/137 分鐘閱讀1 次瀏覽
UUID v4 與 v7 完全指南:如何選擇正確的 UUID 版本

UUID v4 與 v7 完全指南

什麼是 UUID?

UUID(Universally Unique Identifier) 是一種 128 位元的識別碼,用於在分散式系統中唯一標識資訊。UUID 的格式為 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,共 36 個字元。

UUID v4:隨機生成

UUID v4 是最常用的版本,完全由隨機數生成。

範例:550e8400-e29b-41d4-a716-446655440000

優點

  • 實作簡單,只需要隨機數生成器
  • 碰撞機率極低(約 2^122 種可能)
  • 不包含任何可追蹤的資訊

缺點

  • 完全隨機,無法排序
  • 作為資料庫主鍵時,會導致 B-tree 索引碎片化
  • 插入效能較差(隨機寫入)

UUID v7:時間排序

UUID v7 是較新的版本(RFC 9562),結合了時間戳和隨機數。

範例:018e4f8c-5a00-7000-8000-000000000001

結構

  • 前 48 位元:Unix 毫秒時間戳
  • 4 位元:版本號(7)
  • 12 位元:隨機數
  • 2 位元:變體
  • 62 位元:隨機數

優點

  • 時間排序:自然按照建立時間排列
  • 資料庫友好:順序寫入,B-tree 索引效能好
  • 包含時間資訊:可以從 UUID 提取建立時間
  • 仍然保持唯一性

缺點

  • 包含時間資訊,可能有隱私考量
  • 需要較新的函式庫支援

v4 vs v7 比較

特性UUID v4UUID v7
排序性隨機時間排序
資料庫效能較差優秀
隱私性較好包含時間資訊
實作複雜度簡單稍複雜
碰撞機率極低極低
適用場景一般用途資料庫主鍵

何時使用哪個版本?

使用 UUID v4

  • 不需要排序的場景
  • 隱私性要求高(不想暴露時間資訊)
  • 舊系統相容性需求
  • 簡單的唯一識別碼需求

使用 UUID v7

  • 資料庫主鍵(強烈推薦)
  • 需要按時間排序的場景
  • 分散式系統中的事件排序
  • 新專案的預設選擇

在各語言中使用

JavaScript/TypeScript

javascript
// UUID v4
crypto.randomUUID(); // 原生支援

// UUID v7(需要函式庫)
import { v7 as uuidv7 } from 'uuid';
const id = uuidv7();

Python

python
import uuid
# UUID v4
uuid.uuid4()
# UUID v7(Python 3.12+)
uuid.uuid7()

實用工具推薦

使用我們的 UUID 產生器 [blocked] 可以快速生成 UUID v4 和 v7,支援批量產生和多種格式輸出。

立即試用相關工具

馬上體驗文章中提到的功能