【发布时间】:2010-12-17 22:50:40
【问题描述】:
使用顺序 guid 的目的是让您可以使用聚集索引,而不会出现聚集索引中通常存在的高级别碎片,如果它是常规 guid,对吗?
【问题讨论】:
标签: sql-server sql-server-2008 guid clustered-index newsequentialid
使用顺序 guid 的目的是让您可以使用聚集索引,而不会出现聚集索引中通常存在的高级别碎片,如果它是常规 guid,对吗?
【问题讨论】:
标签: sql-server sql-server-2008 guid clustered-index newsequentialid
首先要澄清的是,主键和聚集索引是两个独立且不同的事物,即一个不耦合到另一个(PK 可以是非聚集的,聚集索引可以是非 PK)。
鉴于此,我认为您要问更多“是否应将顺序 GUID 用作聚集索引”。这是一个沉重的问题,但Kimberly Tripp has discussed this 可能是我见过的最好的人。请注意,这篇文章提到了 PK,但在文章中,她提到了这种考虑如何主要适用于聚集索引选择与 PK。
假设您已经决定使用 GUID 作为集群键(可能是也可能不是),使用顺序 GUID 很可能是比非顺序 GUID 更好的选择,但是有至少有 1 种情况可能首选非顺序 GUID(尽管这是一种非常罕见、非常高级的情况,您必须基本了解您的系统和 SQL 服务器,以至于您毫无疑问应该使用它 - 会有与存储设备上的热点以及在集群的不同位置传播大量写入有关)。
【讨论】:
是的,你是对的。
【讨论】: