jpa @SequenceGenerator.allocationSize 是什么意思?

我用谷歌搜索了很多,发现很多人在https://www.logicbig.com/tutorials/java-ee-tutorial/jpa/seq-generator.htmlallocationSize中说“”的意思。After 'allocationSize' is reached, the next id will be retrieved from the database sequence again

jpa 文件的意思。

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

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

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

我也对 sql 中的“缓存”感到困惑。

综上,以下面为例。

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

INCREMENT BY 100cache 30jpa 的 allocationSize 有什么区别。


翻阅古今
浏览 170回答 1
1回答

烙印99

这里简要说明配置值:分配大小为了尽量减少到数据库服务器的往返次数,ID 被分组分配。每个分配中的 ID 数量由 allocationSize 属性指定。给定分配中的某些 ID 可能不会被使用。因此,此策略不能保证序列值中不会有空缺。默认值为 50。增量指定序列号之间的间隔。此整数值可以是任何正整数或负整数,但不能为 0。如果该值为负,则序列下降。如果该值为正,则序列上升。如果省略此子句,则间隔默认为 1。缓存指定数据库预分配并保存在内存中以加快访问速度的序列值的数量。如果发生系统故障,所有未在提交的 DML 语句中使用的缓存序列值都将丢失。丢失值的潜在数量等于 CACHE 参数的值。结论allocationSize 和 INCREMENT BY 必须具有相同的值。较大的数字会减少数据库往返次数。缓存是数据库性能优化,并不适用于所有数据库类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java