Opciones de vinculación para aplicaciones distribuidas
Ciertas opciones de vinculación (BIND) pueden mejorar el rendimiento de las sentencias de SQL que se ejecutan como parte de aplicaciones distribuidas.
Procedimiento
Para mejorar el rendimiento de aplicaciones que acceden a datos distribuidos:
| Opción de enlace | Valor y acciones recomendadas | Razón |
|---|---|---|
| CURRENTDATA | CURRENTDATA(NO) | Utilice esta opción de enlace para forzar la captación de bloques para consultas ambiguas. |
| ISOLATION | ISOLATION (CS), o cualquier opción distinta a ISOLATION (RR) | Si es posible, no enlace planes de aplicación y paquetes con ISOLATION(RR). Si la aplicación no necesita volver a hacer referencia a filas que ya ha leído, otro nivel de aislamiento podría reducir la contención de bloqueo y la sobrecarga de mensajes durante el proceso de confirmación. |
| KEEPDYNAMIC | KEEPDYNAMIC(YES) | Utilice esta opción de enlace para mejorar el rendimiento en el caso de consultas que utilicen cursores que estén definidos con la opción WITH HOLD. Con KEEPNAMIC(YES), Db2 cierra automáticamente el cursor cuando no existen más datos para la recuperación. El cliente no necesita enviar un mensaje de red para indicar a Db2 que cierre el cursor. Esta opción no es necesaria para clientes que cierren el cursor incluso si dicho cursor está definido con la opción WITH HOLD. |
| NODEFER y DEFER | DEFER(PREPARE) | Esta opción reduce el tráfico de red, ya que las sentencias PREPARE y EXECUTE y las respuestas se transmiten a la vez. |
| PKLIST y NOPKLIST | PKLIST Especifique las colecciones de paquetes
para esta opción de enlace de acuerdo con las recomendaciones siguientes:
|
El orden en el que especifique las colecciones de paquetes
en una lista de paquetes puede afectar al rendimiento del programa de aplicación. Cuando una instancia local de Db2 intenta ejecutar una instrucción SQL en un servidor remoto, el subsistema local de Db2 debe determinar en qué colección de paquetes se encuentra la instrucción SQL. Db2 debe enviar un mensaje al servidor para solicitar que el servidor compruebe cada ID de colección para la instrucción SQL hasta que se encuentre la instrucción o hasta que no haya más ID de colección en la lista de paquetes. Puede reducir la cantidad de tráfico de red y, por tanto, mejorar el
rendimiento si se reduce el número de colecciones de paquetes que cada
servidor debe buscar. Como alternativa a especificar las colecciones de paquetes en la opción de enlace PKLIST, puede especificar la colección de paquetes que esté asociada con una sentencia SQL en el programa de aplicación. Ejecute la sentencia SET CURRENT PACKAGESET antes de ejecutar una sentencia SQL para indicar en Db2 qué colección de paquetes debe buscar la sentencia. |
| PKLIST y NOPKLIST (cont.) | Requisito : Cuando especifique la opción de enlace DEFER(PREPARE) con acceso DRDA, el paquete que contiene las declaraciones cuya preparación desea aplazar debe ser la primera entrada que cumpla los requisitos en la secuencia de búsqueda de paquetes que utiliza Db2 .
Por
ejemplo, supongamos que la lista de paquetes de un plan contiene dos entradas:
Si el paquete previsto está en la colección COLLB, asegúrese de que Db2 busca primero en esa colección ejecutando la siguiente sentencia de SQL:
Como alternativa,
puede listar primero COLLB en la opción de enlace PKLIST:Para la opción de enlace NODEFER (PREPARE), las colecciones de la lista de paquetes pueden estar en cualquier orden, pero si el paquete no se encuentra en la primera entrada PKLIST cualificada, se puede producir una sobrecarga de red significativa tras la búsqueda de Db2 en la lista. |
|
| REOPT | Utilice las directrices siguientes para decidir
qué opción elegir:
|
Debido a los costes de rendimiento cuando Db2 reoptimiza la vía de acceso en tiempo de ejecución, minimice la reoptimización siempre que sea posible. |