Aru*_*run 2 java oracle hibernate jpa spring-boot
我在 Spring 启动应用程序中使用 JPA 和 hibernate。我在批量执行时遇到了一些插入性能问题。到目前为止,我发现的修复是:
Increment by> 1,我给 50”allocationSizeOracle 相同的值Increment By 这样 JPA 可以防止调用获取下一个序列。我的序列定义为:
CREATE SEQUENCE MYSCM.BOOKING_SCHED_SEQ INCREMENT BY 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 CACHE 20
当我增加到INCREMENT BY50 时,缓存应该增加到 50 还是减少?
当我将 INCREMENT BY 增加到 50 时,缓存应该增加到 50 还是减少?
两者都不。INCREMENT BY 和 CACHE 之间没有关系。
INCREMENT BY 控制序列的单调方面。随着 INCREMENT BY 50,系列继续1, 51, 101, 151等等。
CACHE 控制在内存中保存多少序列号来为 NEXTVAL 请求提供服务。CACHE 编号越小,数据库必须越频繁地从其内部表中读取以获取下一个分配范围。所以在一个中等繁忙的系统中,我们希望最小化获取锁存器的数量,所以我们将 CACHE 设置为一个较高的数字,比如 1000。
人们痴迷于设置 CACHE 值,因为他们认为如果它太高,他们可能会“丢失”一些值并在他们的系列中出现差距。这极不可能发生,即使发生了,我们也不应该在意。序列是保证唯一值的来源,没有其他意义。
虽然,重新阅读您的问题后,我认为这不会对批量插入的性能产生任何影响。你为什么选择专注于序列分配?你有没有运行任何跟踪来发现瓶颈在哪里?你和你的 DBA 谈过了吗?
| 归档时间: |
|
| 查看次数: |
1177 次 |
| 最近记录: |