Quelle est la taille par défaut de hibernate.jdbc.fetch_size?
Nous savons par défaut, la plupart des pilotes jdbc chercher tailles 10.
personne ne sait ce que la valeur par défaut taille de l'extraction en mode veille prolongée, à savoir la mise en veille prolongée.jdbc.fetch_size est?
source d'informationauteur ligerdave
Vous devez vous connecter pour publier un commentaire.
En fait, tous les paramètres de configuration sont utilisés pour construire un
o.h.c.Settings
instance. Ceci est fait par leo.h.c.SettingsFactory#buildSettings()
méthode qui contient les lignes suivantes:Donc, un
null
valeur est autorisé, il ne sera pas traduit et sera "multiplie" en tant que tel.Ce paramètre est ensuite utilisé dans
o.h.j.AbstractBatcher.java#setStatementFetchSize
:Cette méthode est appelée lors de la préparation d'un
PreparedStatement
ou unCallableStatement
. VoirprepareQueryStatement
etprepareCallableQueryStatement
dansAbstractBatcher
.Donc, la valeur par défaut est
null
et les résultats en veille prolongée ne pas appelerStatement#setFetchSize()
.C'est en fait résumées dans la Documentation de Référence:
Et voici ce que la javadoc a à dire à propos de
#setFetchSize()
:En d'autres termes, lors de l'utilisation d'un
null
fetch_size
le pilote JDBC utiliser la valeur par défaut qui est zéro.La valeur par défaut est
null
c'est à dire pas de réglage. La base de la mise en œuvre de laQuery
interface,AbstractQueryImpl
utilise en interne une RowSelection de garder une trace de la première rangée, la taille de l'extraction et de délai d'attente. Si ces valeurs sontnull
puis les valeurs ne sont pas définies sur le sous-jacent de la connexion JDBC.Dans JDBC langage la taille de l'extraction est le nombre de lignes physiquement extraites de la base de données à la fois par le pilote JDBC que vous faites défiler une requête ResultSet avec next(). Avec mise en veille prolongée.jdbc.fetch_size une valeur non nulle détermine le JDBC taille de l'extraction, qui à son tour appelle
java.sql.Statement.setFetchSize()
.JDBC extraction de taille est un indicateur d'optimisation pour le pilote de base de données; il ne peut entraîner aucune amélioration de la performance si le pilote que vous utilisez n'est pas de mettre en œuvre cette fonctionnalité. Si elle le fait,elle peut améliorer la communication entre le client JDBC et votre base de données.
Voir http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Statement.html#setFetchSize%28int%29 pour plus d'info.
Mise en veille prolongée (tout implémentation JPA) fonctionne à un niveau au-dessus du pilote JDBC de DB fournisseur. donc, si nous n'avons pas spécifier la taille de l'extraction dans hibernate, je suppose qu'il doit prendre par défaut de la taille de l'extraction configuré au pilote JDBC.
Comme Oracle - 10, DB2 - 32