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の検討をおすすめします。