Partage via


Taille des ensembles de lignes

La taille de l’ensemble de lignes à utiliser dépend de l’application. Les applications basées sur l’écran suivent généralement l’une des deux stratégies. La première consiste à définir la taille de l’ensemble de lignes sur le nombre de lignes affichées à l’écran ; si l’utilisateur redimensionne l’écran, l’application modifie la taille de l’ensemble de lignes en conséquence. La deuxième consiste à définir la taille de l’ensemble de lignes sur un plus grand nombre, par exemple 100, ce qui réduit le nombre d’appels à la source de données. L’application fait défiler l’application localement dans l’ensemble de lignes lorsque cela est possible et récupère les nouvelles lignes uniquement lorsqu’elle fait défiler l’ensemble de lignes en dehors de l’ensemble de lignes.

D’autres applications, telles que les rapports, ont tendance à définir la taille de l’ensemble de lignes sur le plus grand nombre de lignes que l’application peut gérer raisonnablement : avec un ensemble de lignes plus grand, la surcharge réseau par ligne est parfois réduite. La taille d’un ensemble de lignes peut être exactement fonction de la taille de chaque ligne et de la quantité de mémoire disponible.

La taille de l’ensemble de lignes est définie par un appel à SQLSetStmtAttr avec un argument Attribute de SQL_ATTR_ROW_ARRAY_SIZE. L’application peut modifier la taille de l’ensemble de lignes, lier de nouvelles mémoires tampons d’ensemble de lignes (en appelant SQLBindCol ou en spécifiant un décalage de liaison), même après l’extraction des lignes, ou les deux. Les implications de la modification de la taille de l’ensemble de lignes dépendent de la fonction :

  • SQLFetch et SQLFetchScroll utilisent la taille de l’ensemble de lignes au moment de l’appel pour déterminer le nombre de lignes à extraire. Toutefois, SQLFetchScroll avec une FetchOrientation de SQL_FETCH_NEXT incrémente le curseur en fonction de l’ensemble de lignes de la récupération précédente, puis extrait un ensemble de lignes en fonction de la taille actuelle de l’ensemble de lignes.

  • SQLSetPos utilise la taille de l’ensemble de lignes qui est en vigueur à partir de l’appel précédent à SQLFetch ou SQLFetchScroll, car SQLSetPos fonctionne sur un ensemble de lignes qui a déjà été défini. SQLSetPos récupère également la nouvelle taille d’ensemble de lignes si SQLBulkOperations a été appelé après la modification de la taille de l’ensemble de lignes.

  • SQLBulkOperations utilise la taille de l’ensemble de lignes en vigueur au moment de l’appel, car elle effectue des opérations sur une table indépendamment de tout ensemble de lignes extrait.