我知道基于 Guid 的主键没有最好的性能(由于碎片),但它们是全局唯一的并且允许复制场景。
另一方面,整体标识符以可伸缩性为代价具有更高的性能。
但是在什么情况下有人会想要使用顺序唯一标识符作为主键呢?我认为,它超出了 GUID 的目的,但我仍然不时看到提及后续事件。
我在这里想念什么?
我知道基于 Guid 的主键没有最好的性能(由于碎片),但它们是全局唯一的并且允许复制场景。
另一方面,整体标识符以可伸缩性为代价具有更高的性能。
但是在什么情况下有人会想要使用顺序唯一标识符作为主键呢?我认为,它超出了 GUID 的目的,但我仍然不时看到提及后续事件。
我在这里想念什么?
在 SQL Server 2005 中通常称为顺序 guid(由 NEWSEQUENTIALID() 生成)是为了克服普通 guid 的问题。
它们仍然是普遍独特的,但也总是在上升。这意味着它们可以用于复制并且具有比传统 GUID 更好的插入性能。
一个缺点是它们不是“安全的”,因为可以猜测下一个顺序 guid。
使用顺序 guid 可确保您始终使用大于最后一个值的值。对于索引字段,这很重要。您不是在整个频谱中随机插入,而是始终在数据的最后一个“页面”的末尾插入,从而大大减少了页面拆分,尤其是在您的 uniqueidentifier 列也是您的聚集索引的情况下。