【问题标题】:Where does the use of GUID make sense when designing databases?在设计数据库时使用 GUID 有什么意义?
【发布时间】:2012-03-22 04:17:29
【问题描述】:

GUID 的使用主要基于生成全局唯一标识符的需要。从理论上讲,当我们的数据库中有一个表(及其 ID)并且我们定期将外部系统的记录导入到该表中时,它可能会很有用。如果我们的本地数据库和外部系统都将 GUID 用作其标识符,则不应存在 ID 重复冲突。但是,将 GUID 值用作 PK 时会降低性能。它们更大(16 字节),因此 PK 索引更大,可能会出现页面拆分,因此 DBMS 插入和检索记录都比使用整数类型值作为 PK 标识符需要更多时间。

我怀疑将 GUID 作为主键比使用本地内部整数 ID 更好,并将导入记录的 GUID 值存储到表中的单独列中。想听听关于在现实世界的例子中使用 GUID 的意见,利弊:)

【问题讨论】:

标签: database guid uniqueidentifier


【解决方案1】:

ASPFaq有一个全面的比较

  • 由于它们{或多或少}保证是唯一的,因此多个表/数据库/实例/服务器/网络/数据中心可以独立生成它们,然后合并而不会发生冲突;
  • 某些形式的复制需要;
  • 可以在数据库外部生成(例如通过应用程序),这样您就可以避免数据库循环
  • 分布式值可防止热点(只要您不对该列进行聚类,否则会导致异常高的碎片)。

Jeff Atwood 也发布了关于此问题的帖子here

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2018-08-28
    相关资源
    最近更新 更多