Option cursor threshold

Utilisez l'option cursor threshold pour spécifier le nombre de lignes du jeu de curseurs à partir desquelles un jeu de clés de curseurs est généré de façon asynchrone. Lorsque le curseur génère un jeu de clés de curseurs pour un ensemble de résultats, l'optimiseur évalue le nombre de lignes renvoyées par cet ensemble de résultats. Si l'optimiseur de requêtes estime que le nombre de lignes renvoyées est plus élevé que ce seuil, le curseur est généré de façon asynchrone, ce qui permet à l'utilisateur de rechercher des lignes à partir du curseur alors que ce dernier continue d'être rempli. Dans le cas contraire, le curseur est généré de façon synchrone et la requête est en attente jusqu'à ce que toutes les lignes aient été renvoyées.

Si vous attribuez la valeur -1 à l'option cursor threshold, tous les jeux de clés sont générés de façon synchrone (ce qui avantage les jeux de curseurs de petite taille). Si vous attribuez la valeur 0 à l'option cursor threshold, toutes les jeux de clés de curseurs sont générés de manière asynchrone. Si d'autres valeurs sont définies, l'optimiseur de requêtes compare le nombre estimé de lignes du jeu de curseurs et crée le jeu de clés de façon asynchrone si ce nombre dépasse celui de l'option cursor threshold. N'attribuez pas une valeur trop faible à l'option cursor threshold : en effet, il est préférable de constituer les ensembles de résultats réduits de façon synchrone.

Notes

SQL Server ne prend pas en charge la génération de curseurs Transact-SQL pilotés par jeu de clés ou statiques de façon asynchrone. Les opérations de curseur Transact-SQL, comme OPEN ou FETCH, s'effectuent par lots ; c'est pourquoi la génération asynchrone de curseurs Transact-SQL n'est pas nécessaire. SQL Server prend toujours en charge les curseurs côté serveur d'API asynchrones pilotés par jeu de clés ou statiques lorsqu'une opération OPEN à faible latence pose un problème en raison du nombre de boucles de clients pour chaque opération de curseur.

La précision avec laquelle l'optimiseur de requête va évaluer le nombre de lignes d'un jeu de clés dépend du degré d'actualité des statistiques pour chacune des tables dans le curseur.

L'option cursor threshold est une option avancée. Si vous utilisez la procédure système stockée sp_configure pour changer ce paramètre, vous pouvez modifier l'option cursor threshold seulement si la valeur 1 a été attribuée à l'option show advanced options. Le paramétrage prend effet immédiatement (sans redémarrage du serveur).