Si vous activez MySQL Options JDBC
useCursorFetch
, fetchSize sera bien respecté par le pilote.
Cependant, cette approche présente un inconvénient :elle utilisera des curseurs côté serveur, qui dans MySQL sont implémentés à l'aide de tables temporaires. Cela signifie que les résultats n'arriveront qu'une fois la requête terminée sur le serveur et que de la mémoire supplémentaire sera utilisée côté serveur.
Si vous souhaitez simplement utiliser le flux de résultats et que vous ne vous souciez pas de la taille de récupération exacte, la surcharge de setFetchSize(Integer.MIN_VALUE)
n'est pas aussi mauvais que les docs pourraient l'impliquer. En fait, il désactive simplement la mise en cache côté client de l'intégralité de la réponse et vous donne les réponses au fur et à mesure qu'elles arrivent. aucun aller-retour par ligne n'est requis.