我從身份生成器移動到序列希望它可以提高我的批量插入的性能。我正在使用批量大小爲50的JPA EntityManager的持久化方法進行批量插入。插入多達300K條記錄。在Sequence generator中將allocateSize設置爲1與使用Identity Generator相同?
實體表具有主鍵列如下設置 - ID:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="myseq")
@SequenceGenerator(name="myseq", sequenceName="my_table_id_seq", allocationSize = 1)
private Long id;
早些時候,我只是用allocationSize爲50默認,並用此屬性 - 「hibernate.id.new_generator_mappings」 - (設置爲true),我遇到了問題 - 批處理條目0插入到休眠狀態,使用getNextException()
因此,我改變了allocationSize爲1.從那時起,我沒有看到上述問題。然而,這並沒有像分配大小50那樣提高性能。但是這也導致由於分配大小50而已經存在的新ID和ID之間的瘋狂差距。
使用Hi-Lo發生器,當您定義並獲取100或50並將其保存在緩存中時..所以性能將得到提高 – rajadilipkolli