Share 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 passée en fait à apporter les données sur le réseau, et une partie de celle-ci est consacrée à la surcharge réseau, par exemple l’appel effectué par le pilote pour demander une ligne de données. Cette dernière fois peut être réduite si l’application utilise efficacement des blocs, ou des curseurs gras, qui peuvent retourner plusieurs lignes à 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 à une seule ligne. Bien que cela ne fournisse pas de gains de performances, il 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 ensembles 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 d’application. Bien que le jeu de résultats soit résolu, l’ensemble de lignes n’est pas - il change de position et de contenu chaque fois qu’un nouvel ensemble de lignes est récupéré. Tout comme un curseur à une seule ligne, tel que le curseur vers l’avant SQL traditionnel pointe vers une ligne actuelle, un curseur de bloc pointe vers l’ensemble de lignes, ce 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 de 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.

Fetching Next, Prior, First, and Last Rowsets

Indique si un curseur est un curseur de bloc indépendamment de son défilement. Par exemple, la plupart du travail dans une application de rapport est passé à récupérer et à imprimer des lignes. En raison de cela, il fonctionnera le plus rapidement avec un curseur de bloc avant uniquement. Il utilise un curseur vers l’avant uniquement pour éviter les frais d’un curseur défilant et un curseur de bloc pour réduire le trafic réseau.

Cette section contient les rubriques suivantes :