Compartir vía


Cursores mixtos

Un cursor mixto es una combinación de un cursor controlado por conjunto de claves y un cursor dinámico. Se usa cuando el conjunto de resultados es demasiado grande para guardar razonablemente las claves para todo el conjunto de resultados. Los cursores mixtos se implementan mediante la creación de un conjunto de claves más pequeño que todo el conjunto de resultados, pero mayor que el conjunto de filas.

Siempre que la aplicación se desplace dentro del conjunto de claves, el comportamiento está controlado por conjunto de claves. Cuando la aplicación se desplaza fuera del conjunto de claves, el comportamiento es dinámico: el cursor captura las filas solicitadas y crea un nuevo conjunto de claves. Una vez creado el nuevo conjunto de claves, el comportamiento vuelve a ser controlado por conjunto de claves dentro de ese conjunto de claves.

Por ejemplo, supongamos que un conjunto de resultados tiene 1000 filas y usa un cursor mixto con un tamaño de conjunto de claves de 100 y un tamaño de conjunto de filas de 10. Cuando se captura el primer conjunto de filas, el cursor crea un conjunto de claves que consta de las claves de las primeras 100 filas. A continuación, devuelve las primeras 10 filas, según se solicite.

Ahora supongamos que otra aplicación elimina las filas 11 y 101. Si el cursor intenta recuperar la fila 11, se producirá un hueco porque tiene una clave para esta fila, pero no existe ninguna fila; este es el comportamiento controlado por conjunto de claves. Si el cursor intenta recuperar la fila 101, el cursor no detectará que falta la fila porque no tiene una clave para la fila. En su lugar, recuperará lo que anteriormente era la fila 102. Este es el comportamiento del cursor dinámico.

Un cursor mixto es equivalente a un cursor controlado por conjunto de claves cuando el tamaño del conjunto de claves es igual al tamaño del conjunto de resultados. Un cursor mixto es equivalente a un cursor dinámico cuando el tamaño del conjunto de claves es igual a 1.