Partager via


Curseurs de bloc

De nombreuses applications passent beaucoup de temps à apporter des données sur le réseau. Une partie de ce temps est consacrée à acheminer les données sur le réseau, et une autre partie est consacrée à la surcharge du réseau, telle que l’appel effectué par le pilote pour demander une ligne de données. Ce deuxième temps peut être réduit si l’application utilise efficacement les curseurs de bloc, ou fat, qui peuvent renvoyer plus d’une ligne à la fois.

Une application a toujours la possibilité d’utiliser un curseur de bloc. Sur les sources de données à partir desquelles une seule ligne à la fois peut être extraite, les curseurs de bloc doivent être simulés dans le pilote. Pour ce faire, effectuez plusieurs extractions sur une seule ligne. Bien que cela ne fournisse pas de gains de performances, cela ouvre des opportunités pour les applications. Ces applications subissent ensuite des augmentations de performances, car les SGBD implémentent des curseurs de bloc en mode natif et les pilotes associés à ces SGBD les exposent.

Les lignes retournées dans une seule extraction avec un curseur de bloc sont appelées un ensemble de lignes. Il est important de ne pas confondre l’ensemble de lignes avec le jeu de résultats. Le jeu de résultats est conservé à la source de données, tandis que l’ensemble de lignes est conservé dans les mémoires tampons de l’application. Bien que le jeu de résultats soit fixe, l’ensemble de lignes ne l’est pas, il change de position et de contenu chaque fois qu’un nouvel ensemble de lignes est extrait. Tout comme un curseur à une seule ligne, tel que le curseur avant uniquement SQL traditionnel pointe vers une ligne actuelle, un curseur de bloc pointe vers l’ensemble de lignes, qui peut être considéré comme des lignes actuelles.

Pour effectuer des opérations qui fonctionnent sur une seule ligne lorsque plusieurs lignes ont été extraites, l’application doit d’abord indiquer quelle ligne est la ligne actuelle. La ligne actuelle est requise par les appels à SQLGetData et les instructions de mise à jour et de suppression positionnées. Lorsqu’un curseur de bloc retourne d’abord un ensemble de lignes, la ligne actuelle est la première ligne de l’ensemble de lignes. Pour modifier la ligne actuelle, l’application appelle SQLSetPos ou SQLBulkOperations (pour effectuer une mise à jour par signet). L’illustration suivante montre la relation du jeu de résultats, de l’ensemble de lignes, de la ligne actuelle, du curseur d’ensemble de lignes et du curseur de bloc. Pour plus d’informations, consultez Utilisation des curseurs de bloc, plus loin dans cette section, et Instructions de mise à jour et de suppression positionnées et Mises à jour des données avec SQLSetPos.

Récupération des ensembles de lignes Suivant, Précédent, Premier et Dernier

Le fait qu’un curseur soit un curseur de bloc ne dépend pas de la possibilité de le faire défiler. Par exemple, la plupart du travail dans une application de rapport est passé à récupérer et à imprimer des lignes. C’est la raison pour laquelle un curseur en bloc, avant uniquement, sera le plus efficace. Il utilise un curseur avant uniquement pour éviter les frais d’un curseur pouvant défiler et un curseur de bloc pour réduire le trafic réseau.

Cette section contient les rubriques suivantes :