Trabalhando com instruções e conjuntos de resultados
Quando você trabalha com o Microsoft JDBC Driver para SQL Server e os objetos Statement e ResultSet fornecidos por ele, há várias técnicas a serem empregadas para melhorar o desempenho e a confiabilidade dos aplicativos.
Usar o objeto de instrução apropriado
Quando você usa um dos objetos de Instrução do driver JDBC, como o objeto SQLServerStatement, SQLServerPreparedStatement ou SQLServerCallableStatement, verifique se você está usando o objeto apropriado para o trabalho.
- Se você não tiver parâmetros OUT, não precisará usar o objeto SQLServerCallableStatement. Em vez disso, use o objeto SQLServerStatement ou o SQLServerPreparedStatement.
- Se não desejar executar a instrução mais de uma vez ou não tiver parâmetros IN ou OUT, você não precisará usar o objeto SQLServerCallableStatement ou o SQLServerPreparedStatement. Em vez disso, use o objeto SQLServerStatement.
Usar a simultaneidade apropriada para objetos ResultSet
Não peça simultaneidade atualizável ao criar instruções que geram conjuntos de resultados a menos que você realmente pretenda atualizar os resultados. O modelo de cursor padrão somente avanço, somente leitura é o mais rápido para ler conjuntos de resultados pequenos.
Limitar o tamanho dos seus conjuntos de resultados
Considere usar o método setMaxRows (ou a sintaxe de SQL SET ROWCOUNT ou SELECT TOP N) para limitar o número de linhas retornado de conjuntos de resultados potencialmente grandes. Se você precisa lidar com conjuntos de resultados grandes, use um buffer de resposta adaptável configurando a propriedade da cadeia de conexão responseBuffering=adaptive, que é o modo padrão. Esta abordagem permite que o aplicativo processe conjuntos de resultados grandes sem exigir cursores do lado do servidor e minimiza o uso de memória de aplicativo. Para obter mais informações, confira Usando o buffer adaptável.
Usar o tamanho da busca apropriado
Para cursores de servidor somente leitura, é preciso haver equilíbrio entre as viagens de ida e volta ao servidor e a quantidade de memória usada no driver. Para cursores de servidor atualizáveis, o tamanho da busca influencia também a sensibilidade do conjunto de resultados a alterações e simultaneidade no servidor. As atualizações para linhas dentro do buffer de busca atual não são visíveis até que um método refreshRow explícito seja emitido ou até que o cursor deixe o buffer de busca. Os buffers de busca grandes terão melhor desempenho (menos viagens de ida e volta ao servidor), mas são menos sensíveis a alterações e reduzirão a simultaneidade no servidor se CONCUR_SS_SCROLL_LOCKS (1009) for usado. Para obter sensibilidade máxima a alterações, use um tamanho da busca de 1. Porém, essa configuração implicará uma ida e volta ao servidor para cada linha buscada.
Usar fluxos para parâmetros IN grandes
Use fluxos ou BLOBs e CLOBs que são materializados incrementalmente para gerenciar atualização de valores de coluna grandes ou enviar parâmetros IN grandes. O driver JDBC "divide" esses tipos para o servidor em várias viagens de ida e volta, permitindo definir e atualizar valores maiores que o que caberá na memória.
Confira também
Melhorando o desempenho e a confiabilidade com o JDBC Driver