Om du aktiverar MySQL JDBC-alternativ
useCursorFetch
, fetchSize kommer verkligen att respekteras av föraren.
Det finns dock en nackdel med detta tillvägagångssätt:det kommer att använda markörer på serversidan, som i MySQL implementeras med hjälp av tillfälliga tabeller. Detta kommer att innebära att resultaten inte kommer fram förrän frågan har slutförts på servern, och att ytterligare minne kommer att användas på serversidan.
Om du bara vill använda resultatströmning och inte bryr dig om den exakta hämtningsstorleken, är overheaden för setFetchSize(Integer.MIN_VALUE)
är inte så illa som dokumenten kan antyda. Det inaktiverar faktiskt bara cachning på klientsidan av hela svaret och ger dig svar när de anländer; det krävs ingen tur och retur per rad.