14

休止状態で、バッチ挿入を有効にしようとすると

  <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基本以上のものはありません。

設定がありませんか?

4

2 に答える 2

15

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。バッチ フェッチが無効になるためです。

(MySQL など)を使用できない場合は、スケーリングせずパフォーマンスが低下SEQUENCEするジェネレーターを使用する代わりに、バッチ挿入を有効にする別のメカニズム (JDBC など) を使用してみてください。TABLE

于 2015-03-19T13:25:17.860 に答える
6

この場合に欠けていたのは次のとおりです。

<property name="order_inserts">true</property>

参照: https://forum.hibernate.org/viewtopic.php?p=2374413https://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 バッチ サイズの混乱も参照してください 。

于 2012-08-17T18:35:34.530 に答える