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ę.