Combien de données peuvent être stockées dans la mémoire tampon réseau lorsque le lecteur de données est utilisé

tout ce que nous soaps que datareader fonctionne comme

Le datareader lit un enregistrement à la fois, mais à partir du pilote de firebase database sous-jacent. Le pilote de firebase database lit les données de la firebase database par blocs, généralement à l’aide d’une mémoire tampon de 8 kilo-octets.

Si vos enregistrements de résultats sont de petite taille et que vous n’en avez pas beaucoup, ils seront tous insérés dans la mémoire tampon et le pilote de la firebase database pourra tous les alimenter vers le lecteur de données sans avoir à demander davantage de données à la firebase database.

Si vous récupérez un résultat plus grand que le tampon, vous ne pourrez en lire que la première partie. Lorsqu’il n’y aura plus de données dans le tampon réseau, datareader informera le serveur SQL d’envoyer le prochain bloc de données.

voici petit code comment nous utilisons lecteur de données

Ssortingng selectSsortingng = "SELECT * FROM PRODUCT"; IList clients = new List(); using (var selectCommand = new OracleCommand(connection, selectSsortingng)) { using (OracleDataReader selectReader = selectCommand.ExecuteReader()) { if (selectReader.HasRows) { while (selectReader.Read()) { clientes.add( GetDomainObject(selectReader) ); } selectReader.close(); } } } 

supposons que la table PRODUCT a 10 000 enregistrements. Je souhaite donc savoir combien de données peuvent contenir dans un tampon réseau à la fois?

parce que lorsque datareader.ExecuteReader() appellera, le lecteur ira chercher un bloc de données et le stockera dans un tampon réseau de ce PC. lorsque datareader.read() appellera, une seule donnée sera transmise au lecteur à partir de la mémoire tampon. lorsque toutes les lectures seront lues à partir de la mémoire tampon, un appel de firebase database sera à nouveau effectué et le bloc de données suivant sera stocké dans la mémoire tampon.

Je suis simplement curieux de savoir combien de données un lecteur de données peut stocker dans la mémoire tampon lorsque les données sont extraites de la firebase database. lecteur de données va toujours chercher un nombre fixe de lignes de db & stockées dans le tampon ou cela dépend-il de la taille du tampon?

la taille de la mémoire tampon dépend de quoi …. dépend-elle de la mémoire RAM?

s’il vous plaît discuter uniquement des choses liées au tampon réseau parce que je sais comment fonctionne lecteur de données. Merci

En fonction de votre configuration, lisez ce qui suit Traitement de jeu de résultats par défaut et plusieurs jeux de résultats et ensembles de lignes actifs et curseurs SQL Server.

Regardez dans TcpClient.ReceiveBufferSize, il vous indiquera combien de données brutes peuvent être lues en une seule opération.

“La propriété ReceiveBufferSize obtient ou définit le nombre d’octets que vous comptez stocker dans le tampon de réception pour chaque opération de lecture. Cette propriété manipule en fait l’espace du tampon réseau alloué pour la réception des données entrantes.

Votre mémoire tampon réseau doit être au moins égale à celle de votre application pour que les données souhaitées soient disponibles lorsque vous appelez la méthode NetworkStream.Read. Utilisez la propriété ReceiveBufferSize pour définir cette taille. Si votre application doit recevoir des données en vrac, vous devez transmettre à la méthode Read une très grande mémoire tampon d’application.

Si la mémoire tampon réseau est inférieure à la quantité de données demandée dans la méthode de lecture, vous ne pourrez pas extraire la quantité de données souhaitée en une seule lecture. Cela entraîne la surcharge d’appels supplémentaires à la méthode Read. ”

puis lisez à propos de NetworkStream.Read

Vous aurez alors une meilleure idée de la complexité de la réponse à votre question.