在序列生成器中将allocateSize 设置为1 是否与使用身份生成器相同?

右图

我从身份生成器转移到序列,希望它能提高我的批量插入的性能。我正在使用 JPA EntityManager 的persist 方法进行批量插入,批量大小为 50。插入多达 300K 条记录。

实体表的主键列 - 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 那样提高性能。 但这也会导致新 id 和由于 50 的分配大小而已经存在的 id 之间的疯狂差距。

右图

我意识到 Hibernate 增加了太多的开销。刚刚使用 JdbcTemplate 插入超过 100 万个,它就像一个魅力:)

只有当数据负载不是很大时,我才会使用休眠!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用生成器生成(p,1-p)对

如何检查python函数是否为Tornado生成器

python检查生成器是否为空的最佳方法

在Nelmio Alice夹具生成器中将参数设置为数组

设置界面生成器标签

生成器与序列对象

当生成器停止为python吗?

如何使用NReco pdf生成器设置封面?

将生成器设置为特定值

将“随机对象”的种子设置为随机值是否会使生成器更加随机?

如何使用界面生成器为不同的设备设置不同的引导空间

使用随机数生成器为多个操作设置边界限制

如何使用递归生成器为算法步骤设置动画

H5py - 使用生成器创建数据集 - ValueError:使用序列设置数组元素

生成器是否知道生成器功能?

图片生成器错误:要求检索元素0,但序列的长度为0

JavaScript:了解生成器和生成序列的使用

使用生成器生成无限质数序列

更正序列生成器的起始编号?

如何重置休眠序列生成器?

Hibernate忽略序列生成器的initialValue

实现针对先行对序列的生成器

合并序列的生成器存在问题

为什么在再次为生成器设置变量后为生成器设置变量?(这个案例不同于普通的生成器示例)

优化排列生成器,其中每个排列的总和为相同的值

如何使用代码生成器为自定义资源定义生成代码

在Javascript生成器函数中设置键

Mybatis生成器xml配置。设置表之间的联接

电子生成器,如何设置节点环境变量