Mejora del rendimiento para sentencias SQL en aplicaciones distribuidas

En muchos casos, puede utilizar determinadas estrategias para mejorar el rendimiento de sentencias de SQL que se ejecutan en sistemas distribuidos.

Procedimiento

Iniciar la información de la interfaz de programación específica del programa.Para mejorar las sentencias SQL que acceden a aplicaciones distribuidas, utilice los siguientes métodos:

  • Realice operaciones de confirmación frecuentes para evitar retener recursos en el servidor.
  • Evite utilizar varias sentencias de SQL cuando una sola sentencia SQL bien ajustada pueda obtener los resultados que desea.
    Como alternativa, coloque las sentencias de SQL en un procedimiento almacenado, emita las sentencias de SQL en el servidor mediante el procedimiento almacenado, y devuelva el resultado. La utilización de un procedimiento almacenado hace que se cree una sola operación de envío y recepción (para la sentencia CALL) en lugar de una posible operación de envío y recepción para cada sentencia de SQL.

    En función de cuántas sentencias SQL haya en la aplicación, la utilización de procedimientos almacenados puede reducir significativamente el tiempo transcurrido y puede reducir los costes de procesador.

  • Utilice la sentencia RELEASE y la opción de enlace.
    La sentencia RELEASE minimiza el tráfico de la red que es necesario para liberar una conexión remota durante la fase de confirmación. Por ejemplo, si la aplicación tiene conexiones con varios servidores diferentes, especifique la sentencia RELEASE cuando la aplicación haya terminado el proceso para cada servidor. La sentencia RELEASE no cierra cursores, no libera recursos ni evita la utilización posterior de la conexión hasta que se emite la sentencia COMMIT. Simplemente hace más eficiente el proceso durante la ejecución de COMMIT.

    La opción de vinculación DISCONNECT(EXPLICIT) destruye todas las conexiones remotas para las que se especificó RELEASE.

  • Considere la posibilidad de utilizar la cláusula COMMIT ON RETURN YES de la instrucción CREATE PROCEDURE para indicar que Db2 debe emitir un COMMIT implícito en nombre del procedimiento almacenado al regresar de la instrucción CALL. La utilización de esta cláusula puede reducir el periodo de tiempo que se retienen los bloqueos y puede reducir el tráfico de la red. Cuando se especifica COMMIT ON RETURN YES, todas las actualizaciones hechas por el cliente antes de llamar al procedimiento almacenado se confirman con los cambios del procedimiento almacenado.
  • Establezca el valor del registro especial CURRENT RULES en DB2.
    Al solicitar datos LOB, establezca el registro especial CURRENT RULES en DB2 en lugar de a STD antes de realizar una CONNECT. El valor DB2, que es el valor por omisión, puede proporcionar ventajas de rendimiento. Cuando un servidor de Db2 for z/OS® recibe una solicitud OPEN para un cursor, el servidor utiliza el valor del registro especial CURRENT RULES para determinar si la aplicación tiene la intención de conmutar entre los valores LOB y los valores de localizador LOB al captar diferentes filas en el cursor. Si especifica el valor DB2 para CURRENT RULES, la aplicación indica que la primera solicitud FETCH especifique el formato de cada columna de LOB en el conjunto de respuestas y que el formato no cambie en una solicitud FETCH subsiguiente. Pero, si establece el valor de CURRENT RULES en STD, la aplicación capta una columna LOB y la coloca en una variable de lenguaje principal de localizador de LOB o en una variable de lenguaje principal de LOB.

    Aunque un valor de 'STD para REGLAS ACTUALES le da más flexibilidad de programación cuando recupera datos LOB, puede obtener un mejor rendimiento si utiliza un valor de DB2. Con la opción STD, el servidor no bloquea el cursor. Con la DB2 opción, podría bloquear el cursor donde es posible hacerlo.Finalizar la información de la interfaz de programación de uso general.