gpt4 book ai didi

java - Oracle 序列 - 'increment by' 和 'cache'

转载 作者:行者123 更新时间:2023-12-01 19:40:17 25 4
gpt4 key购买 nike

我将 JPA 与 hibernate 一起用于我的 Spring boot 应用程序。我在批量操作时遇到一些插入性能问题。到目前为止我发现的修复是:

  1. 更改 Oracle 序列更新“增量 > 1,我给出 50”
  2. 在 Java 实体中,使用与 Oracle Increment By 相同的值 allocationSize

这样 JPA 就会阻止调用获取下一个序列。我的序列定义为:创建序列 MYSCM.BOOKING_SCHED_SEQ 增量 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 CACHE 20

当我将 INCRMENT BY 增加到 50 时,缓存应该增加到 50 还是减少?

最佳答案

When I increase the INCREMENT BY to 50 should the cache be increased to 50 or reduce?

都不是。 INCRMENT BY 和 CACHE 之间没有关系。

INCRMENT BY 控制序列的单调性。如果增量为 50,则级数变为 1、51、101、151 等等。

CACHE 控制内存中保存多少序列号来服务 NEXTVAL 请求。 CACHE 编号越小,数据库从其内部表读取数据以获取下一个分配范围的频率就越高。因此,在中等繁忙的系统中,我们希望最大限度地减少获取的锁存器的数量,因此我们将 CACHE 设置为一个较高的数字,例如 1000。

人们痴迷于设置 CACHE 值,因为他们认为如果它太高,他们可能会“丢失”一些值并在他们的系列中出现间隙。这种情况极不可能发生,即使发生了,我们也不应该在意。序列是保证唯一值的来源,没有进一步的含义。

<小时/>

不过,重新阅读您的问题后,我认为这不会对批量插入的性能产生任何影响。为什么选择专注于序列分配?您是否运行过任何跟踪来发现瓶颈在哪里?你和你的 DBA 谈过吗?

关于java - Oracle 序列 - 'increment by' 和 'cache',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55575826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com