Partager via


Configuration du serveur : seuil du curseur

S'applique à :SQL Server

Cet article décrit comment configurer l’option de configuration du serveur cursor threshold dans SQL Server à l’aide de SQL Server Management Studio ou Transact-SQL. L'option cursor threshold spécifie le nombre de lignes dans l'ensemble de curseurs auquel les ensembles de clés de curseur sont générés de manière asynchrone. Lorsque les curseurs génèrent un ensemble de clés pour un ensemble de résultats, l'optimiseur de requête estime le nombre de lignes renvoyées pour cet ensemble de résultats. Si l'optimiseur de requête 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 attend que toutes les lignes soient renvoyées.

Limites

SQL Server ne prend pas en charge la génération de curseurs Transact-SQL statiques ou pilotés par jeu de clés de manière asynchrone. Les opérations de curseur Transact-SQL telles que OPEN ou FETCH sont traitées par lots, il n'est donc pas nécessaire de générer de manière asynchrone des curseurs Transact-SQL. SQL Server continue de prendre en charge les curseurs de serveur d'interface de programmation d'application (API) statiques ou pilotés par jeu de clés asynchrones lorsque la faible latence OPEN est un problème, en raison des allers-retours du client 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.

Recommandations

Cette option est une option avancée et doit être modifiée uniquement par un professionnel de base de données expérimenté.

Si vous définissez cursor threshold sur -1, tous les ensembles de clés sont générés de manière synchrone, ce qui profite aux petits ensembles de curseurs. Si vous définissez cursor threshold sur 0, tous les ensembles de touches de curseur sont générés de manière asynchrone. Avec d'autres valeurs, l'optimiseur de requête compare le nombre de lignes attendues dans l'ensemble de curseurs et construit le jeu de clés de manière asynchrone s'il dépasse le nombre défini dans cursor threshold. Ne définissez pas cursor threshold trop basse, car les petits ensembles de résultats sont mieux construits de manière synchrone.

autorisations

Les autorisations d’exécution de sp_configure , sans paramètre ou avec le premier paramètre uniquement, sont accordées par défaut à tous les utilisateurs. Pour exécuter sp_configure avec les deux paramètres afin de modifier une option de configuration ou pour exécuter l’instruction RECONFIGURE, un utilisateur doit disposer de l’autorisation ALTER SETTINGS au niveau du serveur. L’autorisation ALTER SETTINGS est implicitement détenue par les rôles serveur fixes sysadmin et serveradmin.

Utiliser SQL Server Management Studio

  1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur un serveur et sélectionnez Propriétés.

  2. Cliquez sur le nœud Avancé.

  3. Sous Divers, modifiez l’option cursor threshold selon la valeur souhaitée.

Utiliser Transact-SQL

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. Cet exemple montre comment utiliser sp_configure pour attribuer à l’option cursor threshold la valeur 0 pour que les jeux de clés du curseur soient générés de façon asynchrone.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'cursor threshold', 0;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Pour plus d’informations, consultez l’article Options de configuration du serveur.

Suivi : Après avoir configuré l'option de seuil du curseur

Le paramètre prend effet immédiatement sans redémarrage du serveur.