Sql-Server

NEWSEQUENTIALID 在許多表的數據庫中是唯一的嗎?

  • December 12, 2018

NEWSEQUENTIALID 在數據庫中是唯一的嗎?我們使用 NEWSEQUENTIALID 計劃數據庫中的許多表,同時插入並希望確保每個 guid 都是唯一的,無論它們是否位於不同的表中。

正常 NEWID() 將保證數據庫中的唯一性,並且重複的機會是被小行星/閃電擊中的機會,但是它們並不能緩解碎片問題。

本文討論的是 Mac 地址,但是我想為上面的特定數據庫指定問題。 https://stackoverflow.com/questions/28404964/is-uniqueidentifier-unique-across-databases

根據Microsoft Docs,該值在每台電腦上是唯一的,並且只要相關電腦具有網卡,在多台電腦上也是唯一的(假設生成算法使用從網卡中獲取的一些值來生成 GUID)

使用 NEWSEQUENTIALID 生成的每個 GUID 在該電腦上都是唯一的。僅當源電腦具有網卡時,使用 NEWSEQUENTIALID 生成的 GUID 在多台電腦中是唯一的。

但除此之外,似乎確實有一些關於這種獨特性的警告:

UuidCreateSequential 函式具有硬體依賴性。在 SQL Server 上,當數據庫(例如包含的數據庫)移動到其他電腦時,可以形成順序值的集群。使用 Always On 和 SQL 數據庫時,如果數據庫故障轉移到另一台電腦,則可能會形成順序值集群。

在UuidCreateSequential的頁面上我們還可以看到,如果存在網卡,該函式保證在電腦之間是唯一的

具有乙太網/令牌環地址的電腦生成保證全球唯一的 UUID。

引用自:https://dba.stackexchange.com/questions/224783