为了账号安全,请及时绑定邮箱和手机立即绑定

jpa @SequenceGenerator.allocationSize 是什么意思?

jpa @SequenceGenerator.allocationSize 是什么意思?

翻阅古今 2022-06-23 19:20:01
我用谷歌搜索了很多,发现很多人在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 againjpa 文件的意思。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 100、cache 30和jpa 的 allocationSize 有什么区别。
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

这里简要说明配置值:

分配大小

为了尽量减少到数据库服务器的往返次数,ID 被分组分配。每个分配中的 ID 数量由 allocationSize 属性指定。

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

默认值为 50。

增量

指定序列号之间的间隔。

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

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

缓存

指定数据库预分配并保存在内存中以加快访问速度的序列值的数量。

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

结论

allocationSize 和 INCREMENT BY 必须具有相同的值。较大的数字会减少数据库往返次数。

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


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信