我用谷歌搜索了很多,發(fā)現(xiàn)很多人在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 有什么區(qū)別。
1 回答
烙印99
TA貢獻1829條經驗 獲得超13個贊
這里簡要說明配置值:
分配大小
為了盡量減少到數(shù)據(jù)庫服務器的往返次數(shù),ID 被分組分配。每個分配中的 ID 數(shù)量由 allocationSize 屬性指定。
給定分配中的某些 ID 可能不會被使用。因此,此策略不能保證序列值中不會有空缺。
默認值為 50。
增量
指定序列號之間的間隔。
此整數(shù)值可以是任何正整數(shù)或負整數(shù),但不能為 0。
如果該值為負,則序列下降。如果該值為正,則序列上升。如果省略此子句,則間隔默認為 1。
緩存
指定數(shù)據(jù)庫預分配并保存在內存中以加快訪問速度的序列值的數(shù)量。
如果發(fā)生系統(tǒng)故障,所有未在提交的 DML 語句中使用的緩存序列值都將丟失。丟失值的潛在數(shù)量等于 CACHE 參數(shù)的值。
結論
allocationSize 和 INCREMENT BY 必須具有相同的值。較大的數(shù)字會減少數(shù)據(jù)庫往返次數(shù)。
緩存是數(shù)據(jù)庫性能優(yōu)化,并不適用于所有數(shù)據(jù)庫類型。
添加回答
舉報
0/150
提交
取消
