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.