我有一个数据模型,在一个实体和11个其他实体之间有一对多的关系。这12个实体一起代表一个数据包。我遇到的问题是,在这些关系的“多”端发生的插入数量。其中一些可以有多达100个单独的值,因此要在数据库中保存一个完整的数据包,最多需要500次插入。
我在InnoDB表中使用MySQL 5.5。现在,通过对数据库的测试,我发现在处理批插入时,它可以轻松地每秒执行15000次插入(对于加载数据,插入次数甚至更多,但在这种情况下并不实用)。
有没有办法使用Hibernate将这些单独的500个插入集合起来,比如说-5个插入和100个值(对于每个都有100个值的5个链接实体)?
应要求:
@OneToMany(mappedBy="beat", cascade=CascadeType.ALL)
@OrderBy("miliseconds ASC")
public List<AmbientLight> lights;
我可能还应该提到一条重要信息——我正在使用Play!框架1.2.3
关于这个问题,这里有两个很好的答案
请注意,使用标识生成器(默认情况下使用的生成器与播放),批处理插入被禁用。
我通过为每个“插入组”使用Hibernate会话来解决这个问题。结果是,保存数据所需的时间大约减少了7倍。过去保存一个“数据包”大约需要2000毫秒,而现在则需要200到300毫秒。
重复一次-这对游戏有效!Framework1.2.3—我不确定这是否适用于或如何适用于使用Hibernate的其他框架或应用程序。
Session mySession = (Session) Pressure.em().getDelegate();
for(int i = 0 ; i < data.size() ; i++){
initializeFromJsonAndSave(data.get(i), mySession);
}
s.flush();
s.clear();
“initializeFromJsonAndSave”方法已更改,因此,不再调用对象的save()方法,而是调用mySession。保存(myNewObject)。
问题内容: 我有一个数据模型,该数据模型在一个实体和其他11个实体之间具有一对多关系。这12个实体一起代表一个数据包。我遇到的问题是与这些关系的“许多”方面发生的插入次数有关。其中一些可以具有多达100个单独的值,因此要将一个完整的数据包保存在数据库中,最多需要500次插入。 我正在将MySQL 5.5与InnoDB表一起使用。现在,通过测试数据库,我发现在处理批量插入时,它每秒可以轻松地每秒进行
我只是想知道TABLOCK是否会提高批量插入的性能? 根据中的第一个答案https://dba.stackexchange.com/questions/165966/how-does-one-investigate-the-performance-of-a-bulk-insert-statement,看来塔洛克会的。 根据官方文件https://docs.microsoft.com/en-us/s
我正在使用hibernate jpa执行批处理更新。 更新:我得到了解决方案:问题是我正在刷新已经刷新的事务,因此它没有给我任何事务正在进行中的错误以及我上面发布的错误,所以我只是删除了`getem().flush();和getEm().clear();从finally块开始工作:)
出于不需要透露的原因,我需要使用hibernate层运行一系列本机SQL语句。它们是相同的语句(相同的绑定变量),形式为“插入abc(column1,column2)值(:Column1List,:Column2List)”。
我使用Spring Data、Spring Boot和Hibernate作为JPA提供程序,我想提高批量插入的性能。 我引用这个链接来使用批处理: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch15.html 这是我的代码和应用程序。插入分批实验的属性。 我的服务: 与批处理相关的部分application.properti
问题内容: 这是我在阅读有关jpa批量插入的几个主题之后创建的简单示例,我有2个持久对象User和Site。一个用户可以拥有多个站点,因此我们在这里有一对多的关系。假设我要创建用户并将多个站点创建/链接到用户帐户。考虑到我愿意为Site对象使用批量插入,代码如下所示。 但是,当我运行此代码时(我将hibernate方式用作jpa实现提供程序),我看到以下sql输出: 所以,我的意思是“真实的”批量