Popolamento asincrono

Microsoft SQL Server 2005 consente di ottimizzare il popolamento asincrono di cursori gestiti da keyset o statici di grandi dimensioni. Questi tipi di cursori utilizzano tabelle di lavoro create nel database tempdb. I cursori gestiti da keyset archiviano in queste tabelle il relativo keyset, ovvero il set di chiavi che identifica le righe nel cursore, mentre i cursori statici vi archiviano le righe incluse nel cursore stesso. Se in SQL Server Query Optimizer viene stimato che il numero di righe restituito in un cursore statico o gestito da keyset supera il valore del parametro sp_configure cursor threshold, il server avvia un thread distinto per popolare la tabella di lavoro. Il controllo viene restituito immediatamente all'applicazione, in cui è quindi possibile avviare il recupero delle prime righe del cursore senza attendere che l'intera tabella di lavoro sia stata popolata.

L'operazione di popolamento asincrono di un cursore comporta un overhead aggiuntivo. È consigliabile non popolare in modo asincrono cursori di piccole dimensioni. Il parametro sp_configure cursor threshold pertanto non deve essere impostato su un valore troppo basso. Eseguire il popolamento asincrono esclusivamente per cursori di grandi dimensioni.

[!NOTA] SQL Server 2005 non supporta la generazione asincrona di cursori Transact-SQL gestiti da keyset o statici. Le operazioni dei cursori Transact-SQL quali OPEN o FETCH vengono in genere eseguite in batch e pertanto la generazione asincrona di cursori Transact-SQL non è necessaria. SQL Server 2005 continua a supportare i cursori API del server asincroni gestiti da keyset o statici nei casi in cui un'operazione OPEN con bassa latenza rappresenti un problema a causa dei round trip nel client relativi a ogni operazione del cursore.

La funzione @@CURSOR_ROWS restituisce il numero di righe di un cursore. Se si utilizza @@CURSOR_ROWS in un cursore a cui è associata una tabella di lavoro in fase di popolamento, viene restituito un numero negativo. Il valore assoluto del numero restituito corrisponde al numero di righe della tabella di lavoro che sono state popolate. Si supponga, ad esempio, che la funzione @@CURSOR_ROWS venga selezionata mentre è in corso il popolamento del keyset di un cursore gestito da keyset e che siano già incluse nel keyset 1.243 chiavi. In questo caso @@CURSOR_ROWS restituisce il valore -1243.

Vedere anche

Altre risorse

@@CURSOR_ROWS (Transact-SQL)
sp_configure (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005