Quelle est la différence entre mettre en veille prolongée.jdbc.fetch_size et hibernate.jdbc.batch_size?
Je suis en train de régler mon application, est venu à travers certains blogs parlant du lot d'extraction et de lot de sélectionner et de mettre ma compréhension de la façon suivante.
hibernate.jdbc.fetch_size
- Utilisé pour spécifier le nombre de lignes à extraire dans une requête select.hibernate.jdbc.batch_size
- Utilisé pour spécifier un nombre de plaquettes ou les mises à jour soient effectuées dans une base de données unique coup.
S'il vous plaît laissez-moi savoir si ma compréhension est correcte ou pas? Aussi, quels sont les valeurs optimales pour les paramètres ci-dessus..
Ma compréhension est que fetch_size a à faire avec un chargement différé des Collections, tout en batch_size a à voir avec le dosage de choses, comme le lot des inserts ou des mises à jour par lot. Aussi loin que "les valeurs optimales" aller, je pense que c'est un problème de réglage qui est du cas-par-cas.
OriginalL'auteur Bhargav Kumar R | 2014-01-21
Vous devez vous connecter pour publier un commentaire.
Ces deux options, définissez les propriétés dans le pilote JDBC. Dans le premier cas,
hibernate.jdbc.fetch_size
définit la déclaration de la taille de l'extraction dans le pilote JDBC, c'est le nombre de lignes récupérées quand il n'y a plus qu'une seule ligne de résultat sur les instructions select.Dans le second cas,
hibernate.jdbc.batch_size
détermine le nombre de mises à jour (insertions, mises à jour et suppressions) qui sont envoyés à la base de données à la fois pour l'exécution. Ce paramètre est nécessaire de faire un lot insère, mais elle doit être couplée avec la commande insère paramètre et le pilote JDBC de la capacité de réécrire l'insère dans un lot instruction insert.Voir ce lien
OriginalL'auteur Trevor Gowing
Vos hypothèses sont correctes.
mise en veille prolongée.jdbc.fetch_size
La
hibernate.jdbc.fetch_size
Hibernate propriété de configuration est utilisé pour le réglage de la JDBC#setFetchSize
propriété pour chaque déclaration que Hibernate utilise au cours de la cours d'exécution le Contexte de Persistance.Normalement, vous n'avez pas besoin de définir cette propriété comme la valeur par défaut est très bien, surtout pour MySQL et PostgreSQL, ce qui récupérer l'intégralité de la
ResultSet
dans une base de données unique aller-retour. Parce que Hibernate traverse l'ensemble de laResultSet
, vous êtes mieux de récupération de toutes les lignes en une seule pousse au lieu d'utiliser plusieurs allers-retours.Que pour Oracle, vous pouvez définir, puisque c'est la valeur par défaut taille de l'extraction est seulement 10. Pour plus de détails, consultez cet article.
mise en veille prolongée.jdbc.batch_size
La
hibernate.jdbc.batch_size
propriété est utilisée par lots de plusieurs INSÉRER< UPDATE et DELETE ensemble, de sorte qu'ils peuvent être mis dans une seule base de données d'appel.Si vous définissez cette propriété, vous êtes mieux de setiing ces deux ainsi:
hibernate.order_inserts
àtrue
hibernate.order_updates
àtrue
Pour plus de détails, consultez ces deux articles:
OriginalL'auteur Vlad Mihalcea
Taille de l'extraction ne
Statement.setFetchSize()
tandis que la taille des lots est à Hibernate de traitement par lots. Les deux paramètres de configuration sont expliquées ici. Pour hibernate lot reportez-vous iciOriginalL'auteur Saket
Votre compréhension semble tout à fait correct. Je vous invite à consulter la documentation JBOSS sur Hibernate, le chapitre suivant est sur Le traitement par lot. Et celui-ci sur le peaufinage de la performance.
C'est un bon, facile à lire la source. Il donne également des suggestions sur les valeurs optimales, mais comme CodeChimp mentionné, le réglage est mieux de le faire au cas par cas et est un processus reproductible dans le temps.
OriginalL'auteur jvdp