嗨洛还是身份验证?

3

希望能听到一些关于主键的意见——使用自增/序列号还是采用 HiLo 策略(在应用程序中查询高值并增加低值)会更好呢?

2个回答

6
如果您正在使用具有大型表(> 100万行)的 SQL Server 2005/2008,您可能需要考虑此链接,它链接到此处。在某些情况下,scope_identity() 和 @@identity 存在问题。
当然,围绕当前实现问题进行设计并不总是最明智的决定。

2
如果您的应用程序只需要使用一个数据库,我建议选择identity/sequence。 我所见过的唯一真正有说服力的选择HiLo的原因是,当您可以同时使用两个不相连的应用程序实例,并且需要在某个时候协调差异时。 例如:您正在开发内容管理系统,人们可能在不同位置的两个服务器上进行工作,但是这两个服务器需要在某个时间点进行同步。

13
使用HiLo还有其他非常具有说服力的原因,其中之一就是性能。这里描述了它们:http://nhforge.org/blogs/nhibernate/archive/2009/03/20/nhibernate-poid-generators-revealed.aspx - Doron Yaacoby
3
+1 @DoronYaacoby。我在测试中使用for循环调用session.save 100,000次。使用identity的时间为77000毫秒,而使用hilo的时间仅为1900毫秒。 - kommradHomer
HiLo或Guid.Comb比identity更快,因为每次插入后不需要在数据库中进行往返。 - hyde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接