UUIDの衝突確率は?|v4(ランダム)の安全性と仕組み
UUID データベース 設計 アルゴリズム
結論
UUID v4が衝突する確率は天文学的に低い。1秒間に10億個生成しても、衝突するまで85年以上かかる計算。実務上は「絶対に重複しない」と考えて問題ない。
UUID v4とは
UUID(Universally Unique Identifier)のバージョン4は、128ビットのビット列のうち、122ビットを完全な乱数で生成する方式です。
衝突確率のシミュレーション
どのくらいの数を生成すると、1つでも衝突(重複)が発生するか?
| 生成数 | 衝突確率 |
|---|---|
| 1,000,000,000 (10億個) | 約 10^-15 (ほぼ0) |
| 10^15 (1000兆個) | 約 0.00000001% |
| 10^18 | 約 1% (ここでようやく意識するレベル) |
地球上のすべての人間がそれぞれ1億個のUUIDを生成しても、重複が発生する確率は0.00000000006%以下です。
なぜUUIDを使うのか
- 分散環境で便利 — 中央集権的なID発行サーバーなしで、各クライアントが勝手にIDを発行しても衝突しない。
- 推測されにくい — 連番ID(1, 2, 3…)と違い、外部からデータの総数や順序を推測されない。
🆔 この場でUUIDを生成する
注意点:インデックス性能
UUIDはランダムな文字列なため、データベース(B-treeインデックス)の挿入性能が連番IDに比べて落ちる傾向があります。性能が重要な場合は、時系列順に並ぶ「ULID」や、UUID v7の検討をおすすめします。
関連記事
あわせて読むと理解が深まる関連記事をまとめました。
| トピック | 記事 |
|---|---|
| UUID 生成 | UUID 生成|uuidの使い方の使い方と注意点まとめ実務ガイド開発者向け |
| API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較 | API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較 |
| Sagaパターン完全ガイド | Sagaパターン完全ガイド|Orchestration vs Choreography と補償トランザクション(Node.js) |
| 1フレームは何秒・何ms? 60fpsと120fpsの計算方法 | 1フレームは何秒・何ms? 60fpsと120fpsの計算方法 |
| AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026 | AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026|GPTBot・ClaudeBot・Google-Extended・GEO戦略 |
| APIキャッシュ設計ガイド | APIキャッシュ設計ガイド|ETag・Cache-Control・304・CDNキャッシュキーの実務 |
| Web APIのエラーハンドリング設計 | Web APIのエラーハンドリング設計|RFC 9457・error_code・400/422/409の使い分け |
| Web APIのべき等性(Idempotency)設計 | Web APIのべき等性(Idempotency)設計|二重決済を防ぐ実装ガイド |
| APIのレート制限(Rate Limiting)実装ガイド | APIのレート制限(Rate Limiting)実装ガイド|アルゴリズム選定と429エラーの適切なハンドリング |
| APIデバッグで使うツールの使い分け | APIデバッグで使うツールの使い分け|JSON整形・JWT・Base64のワークフロー |
| Aspect Ratio 計算 | Aspect Ratio 計算|16:9・4:3 解像度一覧 |
| Astro Content Collections でブログを構築する | Astro Content Collections でブログを構築する |