【问题标题】:Oracle Sequence getting updated by cache size+lastnumber [closed]Oracle序列通过缓存大小+lastnumber更新[关闭]
【发布时间】:2018-04-19 07:28:07
【问题描述】:

当应用服务器(tomcat)重新启动时,oracle db 中的序列将通过缓存大小+lastnumber 值进行更新。我的应用程序正在使用 Hibernate jpa,并且在 appserver 中创建了这个连接池。

示例。假设 select xxx.nextval from dual 给出 1,2 ,3.... 等被解雇。缓存大小为 100,LAST_NUMBER 为 101。 现在如果重新启动应用服务器即tomcat然后选择xxx.nextval将开始给出101,LAST_NUMBER将变为201。

【问题讨论】:

  • 如果要减少未使用的序列号,请将缓存大小设置为 1。
  • 自己做一些基础研究,您会发现这是 Oracle 序列的预期行为。除非您需要无间隙的连续数字,否则这不是问题 - 在这种情况下,序列不是正确的解决方案。

标签: java spring oracle hibernate jpa


【解决方案1】:

我宁愿说这就是发生的情况:假设缓存大小为 20。最后一个序列获取 获取NEXTVAL,但缓存了 20 个未使用的值。如果它们有一段时间不使用,它们就会退出共享池并丢失。您不需要重新启动数据库或应用程序服务器;它只是发生

在我看来,你不应该担心它。序列并非旨在提供无间隙的数字序列,但它的值始终是唯一的,检索速度非常快,可以在多用户环境中使用,... - 所以,一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2011-10-03
    • 1970-01-01
    • 2016-09-20
    • 2022-11-10
    相关资源
    最近更新 更多