我用谷歌搜索了很多,发现很多人在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 必须具有相同的值。较大的数字会减少数据库往返次数。
缓存是数据库性能优化,并不适用于所有数据库类型。
添加回答
举报
0/150
提交
取消