在设计数据库时,GUID的使用在哪里有意义?

时间:2012-03-04 10:08:44

标签: database guid uniqueidentifier

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

我怀疑GUID是否因为主键比拥有本地内部整数ID更好,并且将导入记录的GUID值存储到表中的单独列中。想听听有关在现实世界中使用GUID的意见,优点和缺点:)

1 个答案:

答案 0 :(得分:2)

ASPFaq

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

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