繁体   English   中英

jpa @ SequenceGenerator.allocationSize是什么意思?

[英]What does the jpa @SequenceGenerator.allocationSize mean?

我用Google搜索了很多,发现很多人说allocationSize意味着“ After '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中进行了测试,因此即使将其设置为20,此distributionSize也不起作用,序列的下一个值不会增加20。

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

综上,以下面为例。

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

INCREMENT BY 100cache 30jpa分配大小有什么区别?

谢谢。

以下是配置值的简短说明:

allocationSize

为了最大程度地减少与数据库服务器的往返行程,将ID分组分配。 每个分配中的ID数由distributionSize属性指定。

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

默认值为50。

增加

指定序列号之间的间隔。

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

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

CACHE

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

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

结论

assignmentSize和INCREMENT BY必须具有相同的值。 较高的数量可减少数据库往返次数。

缓存是数据库性能的优化,并非对所有数据库类型都可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM