データベースで主キーとして Guid を使用していますが、重複する Guid が生成される可能性があるかどうか疑問に思っていました。Guid は一意であることが保証されていますか?
3 に答える
生成された各 GUID が一意であるとは限りませんが、一意のキーの総数 (2^128 または 3.4×10^38) が非常に多いため、同じ番号が 2 回生成される確率は非常に低くなります。たとえば、約 5×10^22 個の星を含む観測可能な宇宙を考えてみましょう。すべての星は、6.8×10^15 個の普遍的に一意の GUID を持つことができます。
ウィキペディアより。
NEWSEQUENTIALID() を使用して生成すると、一意であることが保証されます。それでもマイクロソフトは[1]、それは唯一無二のものであり、
その GUID 値の複製を生成するコンピュータは世界中に存在しません。
ウィキペディアの状態[2]
Microsoft は、NEWSEQUENTIALID() と呼ばれる関数を Transact-SQL 言語に追加しました[8]。この関数は、値が増加することが保証されている GUID を生成しますが、サーバーの再起動時に、より低い数値 (依然として一意であることが保証されます) で始まる可能性があります。
要するに、実際には、それらは一意になります。
[1] http://msdn.microsoft.com/en-us/library/ms190215(SQL.105).aspx
[2] http://en.wikipedia.org/wiki/Globally_unique_identifier#Sequential_algorithms