首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用序列的SqlServer聚集索引和使用池算法插入多个Java服务器-性能

使用序列的SqlServer聚集索引和使用池算法插入多个Java服务器-性能
EN

Stack Overflow用户
提问于 2014-11-15 21:01:30
回答 1查看 119关注 0票数 0

我正在参与一个新的大型项目,它将使用Server 2012。将有10-15台Java服务器连接到该数据库。我们使用Hibernate 4.3作为ORM。

我正在研究使用哪种类型的主键来最大限度地提高性能。在以前的项目中(对于Server 2005),我通常使用id列,并在该列上自动生成标识和聚集索引。

但是,在Server 2012中引入了序列。根据我已经读到的资料,我知道:

  • 应该使用缓存设置来创建序列(例如,缓存1000)
  • 序列应该以增量比>1的设置创建(例如,增量50)。这样,Hiberante将使用池算法。

我担心的是,随着多个Java服务器插入到表中,数据并不总是被插入到聚集索引的末尾。例如(增量为50,当前序列号= 1):

  1. 服务器A从序列中检索下一个值。从序列中返回50。
  2. 服务器B从序列中检索下一个值。从序列返回100。
  3. 服务器B使用id = 51进行插入。
  4. 服务器A使用id = 1进行插入。此插入不在聚集索引的末尾。

您认为不插入聚集索引的末尾会导致大的性能下降吗?我是否可以克服它,或者在我的场景中,我应该坚持身份列而不是序列?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-15 22:22:46

是的,这将是一个巨大的表现。它将导致分页,可能还会导致递归分页。我建议坚持使用身份专栏。有选项,填充,堆表,而不是聚集索引,等等,这些都有一个后续的陷阱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26950680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档