3

データベースで主キーとして Guid を使用していますが、重複する Guid が生成される可能性があるかどうか疑問に思っていました。Guid は一意であることが保証されていますか?

4

3 に答える 3

4

生成された各 GUID が一意であるとは限りませんが、一意のキーの総数 (2^128 または 3.4×10^38) が非常に多いため、同じ番号が 2 回生成される確率は非常に低くなります。たとえば、約 5×10^22 個の星を含む観測可能な宇宙を考えてみましょう。すべての星は、6.8×10^15 個の普遍的に一意の GUID を持つことができます。

ウィキペディアより。

于 2012-06-21T10:41:11.823 に答える
3

生成された各 GUID が一意であるとは限りませんが、一意のキーの総数 (2128 または 3.4 × 1038) が非常に多いため、同じ数が 2 回生成される確率は非常に低くなります。

詳細については、こちらをご覧ください。


GUID の重複を回避するための可能な解決策(まだ必要な場合) は、UNIQUE 制約を使用することです。

于 2012-06-21T10:42:17.653 に答える
1

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

于 2012-06-21T10:44:26.730 に答える