Ovladač Oracle Database JDBC, verze starší než 12:
Ovladač přiděluje maximální velikost pro každý sloupec krát počet řádků v fetchSize před provedením dotazu.
Například pro VARCHAR(4000) alokuje 8 kB násobek fetchSize .
verze 12 (a novější):
Přiděluje přibližně 15 bajtů na sloupec na řádek v fetchSize před provedením dotazu. Po spuštění ovladač ve verzi 12 přidělí pouze tolik, kolik je potřeba k uložení skutečných dat řádku.
V důsledku toho ovladače verze 12 obvykle využívají podstatně méně paměti než ovladače dřívějších verzí.
Váš příklad :
Ve vašem příkladu VARCHAR(20) může být až 40 bajtů, tedy NUMBER může být až 22 bajtů a VARCHAR(100) až 100 bajtů. Pomocí fetchSize nastavte na 100, starší ovladače by alokovaly (40 + 22 + 100) * 100 = 16k . Ovladač verze 12 by přidělil 3 * 15 * 100 = 4.5k . V obou ovladačích je další režie, kterou ignoruji.