Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Alocação de memória Oracle JDBC ao buscar um conjunto de resultados


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.