[英]How do you enable batch inserts in hibernate?
使用休眠,當我嘗試啟用批量插入時
<property name="jdbc.batch_size">50</property>
我得到以下輸出:
[...] cfg.SettingsFactory INFO - JDBC batch updates for versioned data: disabled
[...] cfg.SettingsFactory INFO - Order SQL inserts for batching: disabled
然后這個:
[...] jdbc.AbstractBatcher DEBUG - Executing batch size: 1
從不超過batch size: 1
基本上。
我缺少設置嗎?
要為 INSERT 和 UPDATE 語句啟用批處理,您需要設置以下所有 Hibernate 屬性:
spring.jpa.properties.hibernate.jdbc.batch_size=30
spring.jpa.properties.hibernate.order_inserts=true
spring.jpa.properties.hibernate.order_updates=true
如果您可以使用SEQUENCE
,則不應使用IDENTITY
實體標識符生成器,因為它會禁用批量提取。
如果您不能使用SEQUENCE
(例如 MySQL),那么請嘗試使用單獨的機制來啟用批量插入(例如 JDBC),而不是使用無法擴展且具有高性能損失的TABLE
生成器。
事實證明,在這種情況下缺少的是:
<property name="order_inserts">true</property>
參考: https : //forum.hibernate.org/viewtopic.php ? p =2374413 , https : //stackoverflow.com/a/5240930/32453或者可能是 hibernate.order_inserts。
現在我明白了
[...] cfg.SettingsFactory INFO - Order SQL inserts for batching: enabled
...
[...] Executing batch size: 2
更頻繁(任何大於 1 的值基本上意味着它成功地進行了批量插入)。
hibernate.jdbc.batch_versioned_data 也可能有用。
jdbc:mysql://localhost:3306/batch?rewriteBatchedStatements=true 類型的連接字符串也可能以某種方式相關。
https://forum.hibernate.org/viewtopic.php?p=2374413並參見Hibernate 批量大小混淆
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.