sql >> Database >  >> RDS >> Oracle

Oracle JDBC-geheugentoewijzing tijdens het ophalen van een resultatenset

Oracle Database JDBC-stuurprogramma, versies ouder dan 12:

Het stuurprogramma wijst de maximale grootte toe aan elke kolom maal het aantal rijen in de fetchSize voordat u de query uitvoert.

Bijvoorbeeld voor een VARCHAR(4000) kolom zal het 8k bytes toewijzen keer de fetchSize .


versies 12 (en later):

Het wijst ongeveer 15 bytes per kolom per rij toe in de fetchSize voordat u de query uitvoert. Na uitvoering wijst het stuurprogramma in versie 12 slechts zoveel toe als nodig is om de daadwerkelijke rijgegevens op te slaan.

Als gevolg hiervan gebruiken stuurprogramma's van versie 12 doorgaans aanzienlijk minder geheugen dan de stuurprogramma's van de eerdere versies.


Uw voorbeeld :

In uw voorbeeld een VARCHAR(20) kan zo groot zijn als 40 bytes, een NUMBER kan zo groot zijn als 22 bytes en een VARCHAR(100) zo groot als 100 bytes. Met de fetchSize ingesteld op 100 zouden de oudere stuurprogramma's (40 + 22 + 100) * 100 = 16k toewijzen . Het stuurprogramma van versie 12 zou 3 * 15 * 100 = 4.5k toewijzen . Er is extra overhead in beide stuurprogramma's die ik negeer.



  1. Geo Django mac OS X

  2. Android ListView met SQLite

  3. Hoe te bestellen per hoofdletter ongevoelig ASC of DESC, met DISTINCT en UNION

  4. Bekijk fout in PostgreSQL