Driver JDBC do banco de dados Oracle, versões anteriores à 12:
O driver aloca o tamanho máximo para cada coluna vezes o número de linhas no
fetchSize
antes de executar a consulta. Por exemplo, para um
VARCHAR(4000)
coluna ele irá alocar 8k bytes vezes o fetchSize
. versões 12 (e posteriores):
Ele aloca aproximadamente 15 bytes por coluna por linha no
fetchSize
antes de executar a consulta. Após a execução, o driver na versão 12 aloca apenas o necessário para armazenar os dados reais da linha. Como resultado, os drivers da versão 12 normalmente usam substancialmente menos memória do que os drivers das versões anteriores.
Seu exemplo :
No seu exemplo, um
VARCHAR(20)
pode ter até 40 bytes, um NUMBER
pode ter até 22 bytes e um VARCHAR(100)
tão grande quanto 100 bytes. Com o fetchSize
definido como 100, os drivers mais antigos alocariam (40 + 22 + 100) * 100 = 16k
. O driver da versão 12 alocaria 3 * 15 * 100 = 4.5k
. Há sobrecarga adicional em ambos os drivers que estou ignorando.