sql >> Database teknologi >  >> RDS >> Oracle

Oracle JDBC-hukommelsesallokering, mens et resultatsæt hentes

Oracle Database JDBC-driver, versioner før 12:

Driveren tildeler den maksimale størrelse for hver kolonne gange antallet af rækker i fetchSize før forespørgslen udføres.

For eksempel for en VARCHAR(4000) kolonne vil den tildele 8k bytes gange fetchSize .


version 12 (og nyere):

Den tildeler cirka 15 bytes pr. kolonne pr. række i fetchSize før forespørgslen udføres. Efter udførelse tildeler driveren i version 12 kun så meget som nødvendigt for at gemme de faktiske rækkedata.

Som følge heraf bruger version 12-drivere typisk væsentligt mindre hukommelse end de tidligere versioners drivere.


Dit eksempel :

I dit eksempel en VARCHAR(20) kan være så stor som 40 bytes, et NUMBER kan være så stor som 22 bytes og en VARCHAR(100) så stor som 100 bytes. Med fetchSize sat til 100, ville de ældre drivere tildele (40 + 22 + 100) * 100 = 16k . Version 12-driveren vil tildele 3 * 15 * 100 = 4.5k . Der er ekstra overhead i begge drivere, som jeg ignorerer.



  1. Hvordan opdaterer man mysql med python, hvor felter og indgange er fra en ordbog?

  2. csv uploadet virker ikke

  3. Begræns værdien af ​​en MySQL-datatype til et specifikt område (helst ikke ENUM)

  4. hente navn og værdi fra xmltype attribut i oracle