【问题标题】:What's the purpose of sequental uniqueidentifier in PK of MS SQL?MS SQL的PK中顺序唯一标识符的目的是什么?
【发布时间】:2010-09-16 02:37:19
【问题描述】:

我知道基于 Guid 的主键性能不是最好的(由于碎片),但它们是全局唯一的并且允许复制场景。

另一方面,整体标识符以可扩展性为代价获得更高的性能。

但是在什么情况下有人会想要使用顺序唯一标识符作为主键呢?我认为,它超出了 GUID 的目的,但我仍然不时看到提及后续事件。

我错过了什么?

【问题讨论】:

    标签: sql database guid uniqueidentifier


    【解决方案1】:

    在 SQL Server 2005 中通常称为顺序 guid(由 NEWSEQUENTIALID() 生成)是为了克服普通 guid 的问题。

    它们仍然普遍独特,但也总是在上升。这意味着它们可以用于复制并且比传统的 GUID 具有更好的插入性能。

    一个缺点是它们不“安全”,因为可以猜测下一个顺序 guid。

    http://msdn.microsoft.com/en-us/library/ms189786.aspx

    【讨论】:

    • 只是一个小点。它们几乎可以肯定是独一无二的。它们在特定计算机上是唯一的。如果机器没有网卡,它们可能会变得不唯一(尽管这种情况对于 SQL Server 来说不太可能)。
    【解决方案2】:

    使用顺序 guid 可确保您始终使用大于最后一个值的值。对于索引字段,这很重要。您总是在数据的最后一个“页面”的末尾插入,而不是在整个范围内随机插入,从而大大减少了页面拆分,尤其是在您的 uniqueidentifier 列也是您的聚集索引的情况下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-27
      • 2016-11-04
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多