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.