什麼是UUID 產生器?
UUID(Universally Unique Identifier,通用唯一識別碼)是 128 位元的識別碼,寫成 32 位十六進位數字並以 8-4-4-4-12 分組,例如 550e8400-e29b-41d4-a716-446655440000。不需要中央伺服器就能產生幾乎不會重複的 ID,因此廣泛用於資料庫主鍵、檔案名稱、請求追蹤 ID 等。Microsoft 稱同樣的東西為 GUID。
本工具使用瀏覽器的密碼學安全亂數(Web Crypto API),v7 則依照最新標準 RFC 9562 產生。
使用方法
- 選擇 v4 或 v7,並輸入要產生的數量(1~100)。
- 視需要開啟大寫、去除連字號、大括號或引號與逗號(程式碼陣列用)。只會改變已產生值的顯示格式。
- 按下 全部複製 或各行的 複製,也可以用 儲存 .txt 下載成檔案。
- 在下方 UUID 驗證器 貼上 UUID,即可確認格式是否正確、屬於哪個版本,若是 v1、v6、v7 還會顯示建立時間。
UUID 各版本差異
| 版本 | 產生方式 | 特點 |
|---|---|---|
| v1 | 時間 + MAC 位址 | 可能洩漏裝置資訊 |
| v3 / v5 | 名稱的 MD5 / SHA-1 雜湊 | 輸入相同則 UUID 相同 |
| v4 | 122 位元亂數 | 最常用,沒有順序 |
| v7 | Unix 毫秒時間 + 亂數 | 依時間排序,對資料庫索引友善 |
UUID 的第 13 個十六進位數字(第三組的第一個字元)就是版本號,例如 xxxxxxxx-xxxx-7xxx-… 是 v7。
為什麼資料庫主鍵推薦用 v7
v4 完全隨機,寫入 MySQL InnoDB 或 PostgreSQL 的 B-tree 索引時插入位置分散,會增加分頁分裂與快取未命中。v7 的前 48 位元是建立時間,新值永遠接在索引尾端,效能接近自動遞增主鍵,又能在多台伺服器上各自產生而不衝突。不過 ID 會透露建立時間,若不希望對外公開,請改用 v4。
常見問題
UUID 會重複嗎?
v4 共有 2^122(約 5.3×10^36)種可能,即使每秒產生 10 億個,也要持續約 85 年,重複機率才會達到 50%。實務上可以視為不會重複。
GUID 和 UUID 有什麼不同?
兩者是同一種 128 位元識別碼。Microsoft 環境稱為 GUID,通常以大寫並加上大括號 {…} 表示。開啟大寫與大括號選項即可產生 GUID 格式。
產生的 UUID 會被記錄在伺服器上嗎?
不會。UUID 在瀏覽器內產生,不會傳送到任何地方。只有格式選項與數量會儲存在這台裝置上。
在同一毫秒內產生的 v7 也能保證順序嗎?
可以。同一毫秒內會採用 RFC 9562 的計數器方式,下一個值一定比較大,因此一次產生 100 個也會依產生順序排列。