Comment activer les insertions par lots dans Hibernate?
Avec hibernate, quand j'essaye d'activer le lot insère avec
<property name="jdbc.batch_size">50</property>
J'obtiens le résultat suivant:
[...] cfg.SettingsFactory INFO - JDBC batch updates for versioned data: disabled
[...] cfg.SettingsFactory INFO - Order SQL inserts for batching: disabled
Et puis ceci:
[...] jdbc.AbstractBatcher DEBUG - Executing batch size: 1
jamais plus de batch size: 1
essentiellement.
Suis-je manque un paramètre?
source d'informationauteur rogerdpack
Vous devez vous connecter pour publier un commentaire.
À activer le traitement par lots pour les INSÉRER et mettre à JOUR les déclarationsvous avez besoin d'orig toutes les propriétés Hibernate:
Si vous pouvez utiliser une SÉQUENCE, alors vous ne devriez pas utiliser l'IDENTITÉ des générateurs, depuis il désactive le chargement par lot.
Si vous ne pouvez pas utiliser une SÉQUENCE (par exemple MySQL), puis essayez d'utiliser un mécanisme distinct pour permettre lot inserts (par exemple jOOQ) au lieu d'utiliser le Générateur de tableaux qui ne l'est pas et a une haute performance de pénalité.
S'avère que ce qui manquait dans ce cas était:
ref: https://forum.hibernate.org/viewtopic.php?p=2374413https://stackoverflow.com/a/5240930/32453
Ou, éventuellement, mettre en veille prolongée.order_inserts.
Maintenant je vois
Beaucoup plus fréquemment (quelque chose de plus grand que 1 signifie qu'il a réussi à faire de lot inserts).
mise en veille prolongée.jdbc.batch_versioned_data peut également être utile.
jdbc:mysql://localhost:3306/lot?rewriteBatchedStatements=true type chaînes de connexion peut également être liée d'une certaine manière.
https://forum.hibernate.org/viewtopic.php?p=2374413 et de voir aussi
Hibernate taille de lot de confusion