默认情况下,100个插入将导致100个SQL INSERT语句,这很糟糕,因为它导致100次数据库往返。
批处理机制能够使用分组的机制INSERTs,UPDATEs,并DELETEs,作为一个结果,它显著减少数据库往返次数。实现批量插入的一种方法是使用SimpleJpaRepository#saveAll(Iterable entities)方法。在这里,我们用MySQL做到这一点。
关键点:
在application.properties中设置spring.jpa.properties.hibernate.jdbc.batch_size
在application.properties中设置spring.jpa.ate_statistics(只是为了检查批处理是否正常)
在application.properties,设置JDBC URL中rewriteBatchedStatements=true (特定于MySQL的优化)
在application.properties设置 JDBC URL使用cachePrepStmts=true(启用缓存,如果您决定设置prepStmtCacheSize, 则也很有用prepStmtCacheSqlLimit;等等;如果没有此设置,则禁用缓存)
在application.properties设置 JDBC URL中useServerPrepStmts=true(通过这种方式切换到服务器端预处理语句(可能会显着提升性能))
在实体中,使用指定的生成器,因为MySQL IDENTITY将导致批处理被禁用
在实体中,添加@Version类型的属性Long以避免SELECT在批处理之前额外触发(还防止在多请求事务中丢失更新)。额外的SELECT
本文发布于:2024-02-02 01:04:11,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681198040402.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |