GUID vs INT IDENTITY GUID (Globally Unique Identifier)和INT IDENTITY是在数据库中用于生成唯一标识的两种不同方法。 GUID是一个128位的数字,可以保证在全球范围内的唯一性。它是在创建记录时由数据库系统自动生成的,不依赖于数据库服务器或网络连接。这意味着即使在不同的数据库中生成GUID,也不会有冲突。 INT IDENTITY是一个整数类型的列,它在每个新记录插入时递增。这意味着每个新记录都会有一个唯一的整数值,但只在特定的数据库中保

33 浏览
0 Comments

GUID vs INT IDENTITY GUID (Globally Unique Identifier)和INT IDENTITY是在数据库中用于生成唯一标识的两种不同方法。 GUID是一个128位的数字,可以保证在全球范围内的唯一性。它是在创建记录时由数据库系统自动生成的,不依赖于数据库服务器或网络连接。这意味着即使在不同的数据库中生成GUID,也不会有冲突。 INT IDENTITY是一个整数类型的列,它在每个新记录插入时递增。这意味着每个新记录都会有一个唯一的整数值,但只在特定的数据库中保

可能的重复:

你喜欢什么样的主键?

我知道使用GUID和使用INT作为数据库中的主键的好处。考虑到GUID本质上是一个128位的INT,而普通的INT只有32位,INT是一个节省空间的选择(尽管在大多数现代系统中,这个观点通常无关紧要)。

最终,在什么情况下,您会选择使用INT作为主键,而不是GUID?

0
0 Comments

在我们非常复杂的企业软件中,到处都使用了GUID。运行顺畅。

我相信GUID在语义上更适合作为标识符。在面临问题之前,不必无谓地担心性能问题。要谨防过早优化。

还有数据库迁移的优势。使用GUID,您将不会发生冲突。如果尝试合并使用整数作为标识的多个数据库,则必须替换它们的值。如果这些旧值在URL中使用过,那么现在它们将不同,对SEO产生影响。

那么关于企业软件中的GUID聚集呢?

我完全同意这个回答,你对像SQL这样的解释性语言工作原理的直觉可能是错误的;在你有一个可靠的测试告诉你差异之前,不要优化。至于聚集:它会创建争用和热页面,特别是当有多个用户都尝试写入同一页时。随机键将数据分散到许多页面上,并减少争用。

0
0 Comments

在回答你的问题之前:

在什么情况下你会选择使用INT作为主键,而不是GUID?

如果我的系统有一个在线/离线版本,在离线版本中你可以保存数据,并且在同步期间将这些数据传输回服务器。这样,你就可以确保在数据库中不会出现相同的键。

0
0 Comments

在Kimberley Tripp (SQLSkills.com)的一篇文章中,她提到了使用GUID作为主键的问题。她反对这样做是因为会产生不必要的开销。然而,Tony Rogerson在他的系列文章中提出了一个不同的观点,他认为在使用SSD的情况下,碎片化问题大大减少了。

根据博客文章的论点(如果我没有理解错的话),在使用INT/BIGINT系统和使用聚集主键(SQL Server)的数据库中,性能更快、更节省空间。然而,并非所有的数据库都是如此,比如Postgres。

Kimberley Tripp建议不要将唯一标识符作为聚集键。在她的文章或评论中,她提到,只要唯一标识符不是聚集键,将其作为主键是可以的。主键不一定需要是聚集键。

在解决这个问题时,一个解决方法是将GUID作为主键,但不将其作为聚集键。这样可以避免不必要的开销,并提高性能和空间利用率。

0