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を使うのか

  1. 分散環境で便利 — 中央集権的なID発行サーバーなしで、各クライアントが勝手にIDを発行しても衝突しない。
  2. 推測されにくい — 連番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 設定ガイド 2026AIクローラー対応 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 でブログを構築する