все мы знаем, что datareader работает как
Средство чтения данных считывает запись за раз, но считывает ее из базового драйвера базы данных. Драйвер базы данных считывает данные из базы данных блоками, обычно используя буфер размером 8 килобайт.
Если ваши записи результатов малы и их не очень много, все они поместятся в буфере, и драйвер базы данных сможет передать их все в устройство чтения данных, не запрашивая у базы данных дополнительные данные.
Если вы получите результат, который больше, чем буфер, вы сможете прочитать только первую его часть, и когда в сетевом буфере не будет данных, программа чтения данных сообщит серверу sql об отправке следующего блока данных.
вот небольшой код, как мы используем считыватель данных
String selectString = "SELECT * FROM PRODUCT";
IList<client> clients = new List<client>();
using (var selectCommand = new OracleCommand(connection, selectString))
{
using (OracleDataReader selectReader = selectCommand.ExecuteReader())
{
if (selectReader.HasRows)
{
while (selectReader.Read())
{
clientes.add( GetDomainObject(selectReader) );
}
selectReader.close();
}
}
}
предположим, что таблица PRODUCT содержит 10 000 записей. так что я хотел бы знать, сколько данных может быть размещено в сетевом буфере за раз?
потому что, когда datareader.ExecuteReader()
вызовет, читатель извлечет блок данных и сохранит его в сетевом буфере на этом компьютере. когда datareader.read()
вызовет, тогда отдельные данные будут отправлены на считыватель из буфера. когда все прочитанные будут прочитаны из буфера, вызов базы данных будет выполнен снова, и следующий блок данных будет сохранен в буфере.
Мне просто любопытно узнать, сколько данных устройство чтения данных может хранить в буфере при извлечении данных из базы данных. считыватель данных всегда будет извлекать фиксированное количество строк из базы данных и хранить в буфере, или это зависит от размера буфера?
размер буфера зависит от чего....это зависит от оперативной памяти?
пожалуйста, обсуждайте только вещи, связанные с сетевым буфером, потому что я знаю, как работает считыватель данных. Благодарность