jpa @ SequenceGenerator.allocationSize是什么意思?

问题描述 投票:1回答:1

我google了很多,发现许多人说allocationSizeAfter 'allocationSize' is reached, the next id will be retrieved from the database sequence again意味着'https://www.logicbig.com/tutorials/java-ee-tutorial/jpa/seq-generator.html'。

这意味着jpa文件。

The amount to increment by when allocating sequence numbers from the sequence

它似乎与sql中的'increment by'相同。

哪一个是对的?由于我在h2 / jpa中测试过,这个allocationSize不起作用,即使它设置为20,序列的下一个值也不会增加20。

我也对sql中的'cache'感到困惑。

总之,以下为例。

CREATE SEQUENCE ITEM_ID_SEQ START WITH 1 INCREMENT BY 100 cache 30;

INCREMENT BY 100,缓存30和jpa的allocationSize有什么区别。

谢谢。

java oracle jpa h2
1个回答
2
投票

这里是配置值的简短说明:

allocationSize

为了最小化到数据库服务器的往返,ID将按组分配。每个分配中的ID数由allocationSize属性指定。

可能不会使用给定分配中的某些ID。因此,该策略不保证序列值不会有间隙。

默认值为50。

增量

指定序列号之间的间隔。

此整数值可以是任何正整数或负整数,但不能为0。

如果此值为负,则序列下降。如果值为正,则序列上升。如果省略此子句,则间隔默认为1。

CACHE

指定数据库预分配的序列值的数量,并保留在内存中以便更快地访问。

如果发生系统故障,则所有未在已提交的DML语句中使用的高速缓存序列值都将丢失。潜在的丢失值数等于CACHE参数的值。

结论

allocationSize和INCREMENT BY必须具有相同的值。数字越大,数据库往返越少。

缓存是数据库性能优化,不适用于所有数据库类型。

© www.soinside.com 2019 - 2024. All rights reserved.