簡體   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