Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si trabaja con el Microsoft JDBC Driver para SQL Server y los objetos Statement y ResultSet que proporciona, hay varias técnicas que puede usar para mejorar el rendimiento y la confiabilidad de las aplicaciones.
Usar el objeto de instrucción correcto
Si usa uno de los objetos Statement del controlador JDBC, como SQLServerStatement, SQLServerPreparedStatement o SQLServerCallableStatement, asegúrese de que está usando el objeto correcto para el trabajo.
- Si no tiene parámetros OUT, no necesita usar el objeto SQLServerCallableStatement. En su lugar, use el objeto SQLServerStatement o SQLServerPreparedStatement.
- Si no va a ejecutar la instrucción más de una vez o no tiene parámetros IN u OUT, no necesita usar el objeto SQLServerCallableStatement o SQLServerPreparedStatement. En su lugar, use el objeto SQLServerStatement.
Utilice la concurrencia adecuada para los objetos ResultSet
No solicite concurrencia actualizable al crear sentencias que devuelvan conjuntos de resultados, a menos que realmente tenga la intención de actualizar los resultados. El modelo de cursor predeterminado de solo avance y solo lectura es el método más rápido para leer conjuntos de resultados pequeños.
Limitar el tamaño de los conjuntos de resultados
Considere la posibilidad de usar el método setMaxRows (o SET ROWCOUNT la sintaxis SELECT TOP N SQL) para limitar el número de filas devueltas de conjuntos de resultados potencialmente grandes. Si es necesario administrar conjuntos de resultados grandes, considere la posibilidad de usar almacenamiento en búfer de respuesta adaptable configurando la propiedad de cadena de conexión responseBuffering=adaptive, que es el modo predeterminado. Este enfoque permite a la aplicación procesar conjuntos de resultados grandes sin requerir los cursores del lado del servidor, minimizando el uso de memoria de la aplicación. Para obtener más información, consulte Uso del almacenamiento en búfer adaptable.
Usar el tamaño de recuperación apropiado
En el caso de los cursores de servidor de solo lectura, el inconveniente son los ciclos de ida y vuelta al servidor frente a la cantidad de memoria usada en el controlador. Para los cursores de servidor actualizables, el tamaño de captura también influye en la sensibilidad del conjunto de resultados frente a los cambios y en la simultaneidad en el servidor. Las actualizaciones de las filas en el búfer de captura actual no son visibles hasta que se genera un método refreshRow explícito o hasta que el cursor sale del búfer de recuperación. Los búferes de captura grandes ofrecen un mayor rendimiento (menos ciclos de ida y vuelta del servidor), pero son menos sensibles a los cambios y reducen la simultaneidad del servidor si se usa CONCUR_SS_SCROLL_LOCKS (1009). Para obtener el máximo nivel de sensibilidad a los cambios, use un tamaño de captura de 1. Pero esta configuración implica un recorrido de ida y vuelta al servidor para cada fila recuperada.
Optimizaciones de la ruta de lectura del conjunto de resultados
A partir de la versión 13.6, el controlador reduce las asignaciones temporales al leer conjuntos de resultados y utiliza rutas rápidas para cadenas comunes, DECIMAL, NUMERIC, MONEY, y SMALLMONEY valores. Estas optimizaciones son automáticas y pueden reducir la presión de recogida de basura para conjuntos de resultados grandes y amplios. No se requiere configuración de aplicaciones.
Usar flujos con parámetros IN grandes
Use secuencias o BLOB y CLOB materializados de forma incremental para controlar la actualización de valores de columnas grandes o el envío de parámetros IN grandes. El controlador JDBC "fragmenta" estos tipos en el servidor en varios recorridos de ida y vuelta, lo que permite establecer y actualizar valores mayores que los que puede contener la memoria.