回答編集履歴

1 修正

mts10806

mts10806 score 26900

2018/05/06 18:49  投稿

重複値は例え別のコンピュータからのアクセスであっても個別の識別子が出力されるようになっています。
例え別のコンピュータからのアクセスであっても重複は起きない個別の識別子が出力されるようになっています。
- [MySQL 5.6 リファレンスマニュアル 12.18 その他の関数 UUID()](https://dev.mysql.com/doc/refman/5.6/ja/miscellaneous-functions.html#function_uuid)
> UUID は、空間と時間においてグローバルに一意の数字として設計されています。UUID() の 2 回の呼び出しが、相互に接続されていない 2 台の異なるコンピュータ上で実行された場合でも、これらの呼び出しでは 2 つの異なる値が生成されると想定されます。
また、コメントでいただいた「すごく似た異なる値が出力される」については、
下記仕様が影響しているように思います。
※上記のドキュメントよりそのまま抜粋
- 最初の 3 つの数字は、タイムスタンプから生成されます。
- 4 番目の数字には、(たとえば、サマータイムが原因で) タイムスタンプ値の単調性が失われる場合に備えて、時間の一意性が保持されます。
- 5 番目の数字は、空間の一意性を提供する IEEE 802 ノード番号です。(たとえば、ホストコンピュータに Ethernet カードが搭載されていないことや、オペレーティングシステム上のインタフェースのハードウェアアドレスを見つける方法がわからないことが原因で) 後者を使用できない場合は、ランダムな数字で置き換えられます。この場合、空間の一意性は保証できません。しかしそれでも、競合が発生する可能性は非常に低くなります。
つまり、同じ端末からの実行であれば、似ている近い値が出力されるのはおおよそ当然ということです(タイムスタンプなど、同時に実行したのであれば時間はほぼ同じですしね)

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る