sql >> Databáze >  >> RDS >> Oracle

Přidělování paměti Oracle JDBC při načítání sady výsledků

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.



  1. Přesuňte řádek mysql do jiné tabulky ve stejné databázi

  2. Je možné přetečení typu Oracle NUMBER?

  3. Jak vytvořit uloženou agregační funkci MySQL?

  4. Django:jak získat data order_detail_data podle order_id