lunes, 15 de octubre de 2007

Tiempo de respuesta lento de aplicaciones Oracle (I)

Introducción al problema

Las aplicaciones que utilizan el protocolo SQLNet pueden ser muy sensibles a la calidad del enlace que las conecta a la base de datos. Las aplicaciones desarrolladas en Java o Visual Basic con sentencias SQL embebidas en el código utilizan una cantidad importante de mensajes para comunicarse con la base de datos y ejecutar las sentencias.
Considerando la baja latencia de una red LAN (reducida demora en recorrer dos puntos de un enlace), ésta generalmente no impacta negativamente en el tiempo de respuesta de la aplicación. No ocurre lo mismo cuando la aplicación es ejecutada en un punto de venta alejado geograficamente del centro de cómputos que aloja la base de datos. Estos puntos de venta lejanos en ocaciones utilizan enlaces de baja calidad y bajo costo. Hemos registrado latencias de red muy altas de hasta 150 milisegundos en el horario pico. Estas condiciones del enlace provocan gran lentitud del tiempo de respuesta de consultas y transacciones aunque el ancho de banda del enlace se encuentre parcialmente libre.

Podemos encontrar en la documentación oficial la siguiente recomendación:

"La latencia de red punto a punto debería estar entre 1 y 25 miliseg."

Manual: Oracle9 i Database Performance Planning
Capítulo: 2 Monitoring and Improving Application Performance
Sección: The Oracle Performance Improvement Method
Párrafo: Performance Characteristics of Hardware Configurations

La documentación oficial de 10g no vuelve a mencionar valores absolutos como 25 miliseg. sino que recomienda distintas técnicas de evaluación con distintas cargas de trabajo y la participación del usuario final para validar un tiempo de respuesta satisfactorio.

¿Cómo mejorar el tiempo de respuesta entre la aplicación cliente y el servidor de base de datos sin utilizar un enlace de mayor calidad y por ende mas costoso?