martes, 16 de octubre de 2007

Tiempo de respuesta lento de aplicaciones Oracle (II)

Reduciendo el tiempo de respuesta con PL/SQL

Si nuestra aplicación programada en Java o Visual Basic contiene sentencias SQL embebidas en el código, la base de datos debe recibir y procesar una por una cada sentencia SQL. Las aplicaciones que utilizan muchas sentencias SQL aisladas requieren múltiples llamadas a la base de datos, provocando overhead de red y performance.

Ver la documentación oficial:

Manual: Oracle Database PL/SQL User's Guide and Reference
Capítulo: 1 Overview of PL/SQL
Sección: Advantages of PL/SQL
Párrafo: Better Performance

Utilizando PL/SQL podemos solicitar y ejecutar un bloque entero de sentencias SQL de una sola vez. Reduciremos en gran medida el tráfico de red entre la aplicación y la base de datos. Si el enlace es lento o está muy congestionado reduciremos el tiempo de respuesta de la aplicación.
Los procedimientos PL/SQL almacenados en la base de datos o (PL/SQL stored procedures) se compilan una sóla vez y se almacenan en formato ejecutable ganando eficiencia.
Una única llamada a través de la red puede iniciar la ejecución de una gran tarea conformada por transacciones y sentencias SQL porque el procedimiento está almacenado en la base de datos. De esta forma reducimos el trafico de la red y mejoramos el tiempo de respuesta. Los stored procedures son reutilizados y compartidos entre usuarios por lo que reducimos los requerimientos de memoria y overhead de ejecución.

¿Si ningún módulo de la aplicación utiliza stored procedures? Modificar miles de líneas de código fuente de performance ineficiente y mediocre puede ser muy costoso.
¿Cómo mejorar el tiempo de respuesta de la aplicación sin modificar la calidad del enlace ni modificar la aplicación?