Condividi tramite


Cursori misti

Un cursore misto è una combinazione fra un cursore gestito da keyset e un cursore dinamico. Viene usato quando il set di risultati è troppo grande per salvare ragionevolmente le chiavi per l'intero set di risultati. I cursori misti vengono implementati creando un keyset più piccolo dell'intero set di risultati, ma più grande del set di righe.

Finché l'applicazione scorre all'interno del keyset, il comportamento è gestito da keyset. Quando l'applicazione scorre all'esterno del keyset, il comportamento è dinamico: il cursore recupera le righe richieste e crea un nuovo keyset. Dopo aver creato il nuovo keyset, il comportamento ritorna gestito da keyset all'interno di tale keyset.

Supponiamo, ad esempio, che un set di risultati abbia 1.000 righe e usi un cursore misto con dimensioni del keyset pari a 100 e dimensioni del set di righe pari a 10. Quando viene recuperato il primo set di righe, il cursore crea un keyset costituito dalle chiavi per le prime 100 righe. Restituisce quindi le prime 10 righe, come richiesto.

Supponiamo ora che un'altra applicazione elimini le righe 11 e 101. Se il cursore tenta di riprendere la riga 11, troverà uno spazio vuoto perché ha una chiave per questa riga, ma non vi è alcuna riga; si tratta di un comportamento gestito da keyset. Se il cursore tenta di riprendere la riga 101, il cursore non rileverà che la riga è mancante perché non dispone di una chiave per la riga. Riprenderà invece quella che in precedenza era la riga 102. Questo è un comportamento di cursore dinamico.

Un cursore misto equivale a un cursore gestito da keyset quando le dimensioni del keyset sono uguali alle dimensioni del set di risultati. Un cursore misto equivale a un cursore dinamico quando la dimensione del keyset è pari a 1.