Sterownik Oracle Database JDBC, wersje przed 12:
Sterownik przydziela maksymalny rozmiar dla każdej kolumny razy liczbę wierszy w fetchSize przed wykonaniem zapytania.
Na przykład dla VARCHAR(4000) kolumna przydzieli 8k bajtów razy fetchSize .
wersje 12 (i nowsze):
Przydziela około 15 bajtów na kolumnę na wiersz w fetchSize przed wykonaniem zapytania. Po wykonaniu sterownik w wersji 12 przydziela tylko tyle, ile jest potrzebne do przechowywania rzeczywistych danych wiersza.
W rezultacie sterowniki w wersji 12 zwykle zużywają znacznie mniej pamięci niż sterowniki wcześniejszych wersji.
Twój przykład :
W twoim przykładzie VARCHAR(20) może mieć nawet 40 bajtów, NUMBER może mieć wielkość 22 bajtów i VARCHAR(100) tak duże jak 100 bajtów. Z fetchSize ustawione na 100, starsze sterowniki przydzielą (40 + 22 + 100) * 100 = 16k . Sterownik w wersji 12 przydzieli 3 * 15 * 100 = 4.5k . W obu sterownikach występuje dodatkowe obciążenie, które ignoruję.