Un buen entendimiento del ciclo de vida y funcionamiento de un cursor permite optimizar las aplicaciones que ejecutan solicitudes SQL.
Las etapas durante la ejecución de un cursor con las siguientes:
- Apertura del cursor: una estructura de memoria es asignada al cursor en la memoria privada del proceso servidor del lado del servidor asociado a la sesión (UGA User Global Area). Notar que ninguna solicitud SQL aun es asociada al cursor.
- Recorrido del cursor: una solicitud SQL es asociada al cursor. La representación del recorrido de la solicitud incluyendo su plan de ejecución, que describe cómo el motor SQL ejecutará la solicitud SQL, es cargada en la Shared Pool, para ser más exactos en la library cache. La estructura en la UGA es actualizada para almacenar un puntero hacia la zona asociada al cursor en la library cache.
- Definición de las variables de salida: la solicitud SQL devuelve datos, es por ello que las variables que los almacenarán deben ser definidas. Esta definición es también necesaria para las solicitudes Delete, Insert y Update que utilizan la cláusula RETURNING.
- Enlace de variables de entrada: si la solicitud SQL utiliza variables enlazadas, éstas deber ser proporcionadas. Ninguna verificación es efectuada durante el enlace. Si son transmitidos valores no validos, se activará un error de ejecución.
- Ejecución del cursor: en esta etapa, la solicitud SQL es ejecutada. En función del motor de base de datos, la fase de ejecución real puede ser diferida a la etapa de fetch.
- Fetch del cursor (recuperación del contenido): si la solicitud SQL devuelve un resultado, es en esta etapa que es obtenido. En general es en esta etapa que se efectúa el tratamiento.
- Cierre del cursor: los recursos asociados al cursor en la UGA son automáticamente liberados. El cursor en la library cache no es eliminado para responder a posibles usos en el futuro.
El
artículo original fue escrito por wjaouadi, contribuidor de
CommentCaMarche