Partager via


Remplissage asynchrone

Microsoft SQL Server 2005 prend en charge le remplissage asynchrone de curseurs pilotés par jeux de clés volumineux ou statiques. Les curseurs pilotés par jeux de clés et les curseurs statiques utilisent des tables de travail créées dans tempdb. Les curseurs pilotés par jeux de clés utilisent les tables de travail pour y stocker leur jeu de clés, le jeu de clés identifiant les lignes d'un curseur. Les curseurs statiques utilisent la table de travail pour y stocker les lignes comprises dans le curseur. Si l'optimiseur de requête de SQL Server estime que le nombre de lignes retournées dans un curseur piloté par jeu de clés ou un curseur statique dépassera la valeur du paramètre sp_configure cursor threshold, le serveur démarre un thread séparé pour remplir la table de travail. Le contrôle est immédiatement retourné à l'application qui peut commencer à extraire les premières lignes du curseur au lieu d'attendre que la totalité de la table de travail soit remplie avant de procéder à la première extraction.

Le remplissage asynchrone d'un curseur entraîne une certaine surcharge du système. Comme il est plus efficace de ne pas remplir les petits curseurs de façon asynchrone, le paramètre sp_configure cursor threshold ne doit pas avoir une valeur trop faible. Réservez la méthode de remplissage asynchrone aux curseurs volumineux.

ms188667.note(fr-fr,SQL.90).gifRemarque :
SQL Server 2005 ne prend pas en charge la génération asynchrone de curseurs Transact-SQL pilotés par jeux de clés ou statiques. Les opérations de curseur Transact-SQL telles que OPEN et FETCH sont généralement rassemblées en lots, ce qui rend cette génération asynchrone inutile. SQL Server 2005 continue de prendre en charge les curseurs de serveur API statiques ou de jeux de clés asynchrones si l'opération de curseur OPEN présente une latence trop faible, en raison des boucles clientes de chaque opération de curseur.

La fonction @@CURSOR_ROWS spécifie le nombre de lignes d'un curseur. Si vous sélectionnez @@CURSOR_ROWS sur un curseur dont la table de travail est en cours de remplissage, @@CURSOR_ROWS retourne un nombre négatif. La valeur absolue du nombre retourné est le nombre de lignes ayant été remplies dans la table de travail jusqu'à présent. Par exemple, si @@CURSOR_ROWS est sélectionné lorsque le jeu de clés d'un curseur piloté par jeu de clés est encore en cours de remplissage, mais que 1 243 clés sont déjà dans le jeu de clés, @@CURSOR_ROWS retourne la valeur -1 243.

Voir aussi

Autres ressources

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

Aide et Informations

Assistance sur SQL Server 2005