Consideraciones adicionales sobre SQL
Gestión de conexiones
Agrupación de conexiones
Los productos del servidor de DB2 Connect como, por ejemplo, DB2 Connect
Enterprise Edition, a menudo proporcionan conexiones a bases de datos para miles
de peticiones de clientes simultáneas.
El establecimiento y el cierre de las conexiones con el servidor de bases de datos
puede resultar un proceso con un gran consumo de recursos y tener un efecto
adverso sobre el rendimiento tanto del servidor de bases de datos como del
servidor de DB2 Connect. Para reducir este uso de procesos, los productos del
servidor de DB2 Connect utilizan la agrupación de conexiones para mantener
conexiones abiertas con la base de datos en una agrupación de fácil acceso.
Este problema es especialmente evidente en entornos web en los que cada visita a
una página web puede requerir la creación de una nueva conexión con el servidor
de bases de datos, la realización de una consulta y la terminación de una conexión.
La mayoría de aplicaciones basadas en tecnologías web ejecutan un gran volumen
de transacciones breves. Una transacción web habitual se ejecute como parte de su
propia conexión. En otras palabras, la ejecución de una transacción significa el
establecimiento de una conexión con la base de datos y la terminación de esta
conexión sólo después de unas cuantas sentencias de SQL. Este proceso de
establecer e interrumpir una conexión resulta muy costoso. Conlleva la creación de
un agente de DB2 Connect, el establecimiento de una conexión con la red entre
este agente y el servidor de DB2 y la creación de una hebra de DB2 en el servidor.
Para las conexiones con una ejecución más larga, estos costes se amortizan sobre
v Si la sentencia en cuestión no es una sentencia SELECT, COMMIT ni
ROLLBACK, emita EXECUTE IMMEDIATE para ejecutar la sentencia en
lugar de la secuencia PREPARE y EXECUTE.
v Las aplicaciones ODBC utilizan SQL dinámico. Puede utilizar la función
de perfilado estático de CLI/ODBC para mejorar el rendimiento. Esta
función permite capturar y convertir las llamadas ODBC en sentencias
estáticas almacenadas en un paquete de base de datos. El rendimiento
real obtenido dependerá de la complejidad de la aplicación.
La utilización del Procesador de línea de mandatos (CLP) resulta, en
general, más lenta que si el programa cuenta con SQL dinámico porque el
CLP debe analizar la entrada antes de enviar el SQL al motor de la base de
datos. El CLP también formatea los datos cuando los recibe, lo cual puede
que no sea necesario para su aplicación.
Las sentencias de SQL escritas en un lenguaje interpretado, por ejemplo
REXX, son considerablemente más lentas que las mismas sentencias de
SQL escritas en un lenguaje compilado, por ejemplo C.
Existen dos tipos de sentencias CONNECT, denominados tipo 1 y tipo 2.
Con la conexión de tipo 2, al conectarse a una base de datos la conexión
anterior queda en estado durmiente pero no se descarta. Si más tarde se
conmuta a una conexión en estado durmiente, se evita el uso de procesos
de cargar las bibliotecas y configurar las estructuras de datos internas. Por
esta razón, con la utilización de la conexión de tipo 2 puede mejorarse el
rendimiento de las aplicaciones que acceden a más de una base de datos.
147
Capítulo 9. Ajuste