Pokud povolíte MySQL možnost JDBC
useCursorFetch
, fetchSize bude ovladač skutečně respektovat.
Tento přístup má však jednu nevýhodu:Bude používat kurzory na straně serveru, které jsou v MySQL implementovány pomocí dočasných tabulek. To bude znamenat, že výsledky nebudou doručeny, dokud nebude dotaz dokončen na serveru, a že na straně serveru bude použita další paměť.
Pokud chcete používat pouze streamování výsledků a nestaráte se o přesnou velikost načtení, režie setFetchSize(Integer.MIN_VALUE)
není tak špatné, jak by se mohlo zdát v dokumentech. Ve skutečnosti pouze zakáže ukládání celé odpovědi do mezipaměti na straně klienta a poskytuje vám odpovědi, jakmile přijdou; není vyžadována žádná zpáteční cesta na řádek.