#c# #sql-server
#c# #sql-сервер
Вопрос:
Я выбираю большой объем данных с SQL Server. Я провожу некоторые эксперименты, и кажется, что SQL Server позволяет возвращать результаты запросов только с максимальной скоростью около 10 МБ / с.
Я написал простой тест на C #, используя Dapper, который вставляет данные в таблицу с 2 столбцами, первичным ключом и большим двоичным объектом. База данных выполняется на том же компьютере, что и код. Когда я выбираю данные с помощью простого SELECT
оператора, я получил следующие результаты:
Number of rows | size of blob | time to run query
30 | 1000 KB | 3 sec
30,000 | 1 KB | 3 sec
100 | 1000 KB | 10 sec
1000 | 100 KB | 10 sec
100 | 3000 KB | 30 sec
Аналогичные результаты были достигнуты при выборе данных с использованием SSMS.
Кажется, существует линейная корреляция между объемом данных и скоростью, с которой я могу получать данные, но я не могу найти никаких настроек для настройки максимальной скорости.
Есть ли у SQL Server ограничения на максимальную пропускную способность данных? Есть ли способ настроить указанный предел?
Комментарии:
1. Вероятно, вы столкнулись с аппаратным ограничением. Мониторинг: загрузка ЦП сервера, использование памяти сервера, использование диска сервера, загрузка ЦП клиента, использование памяти клиента, использование сети.
2. Похоже, вы можете исключить хотя бы одну из этих возможностей, синхронизируя ваш запрос с SSMS.
3. SQL Server отслеживает статистику ожидания для каждого сеанса. learn.microsoft.com/en-us/sql/relational-databases /…
4. Если у вас есть доступ к экземпляру SQL Server, возможно, вы могли бы протестировать его с того же компьютера, чтобы исключить сеть, тогда вы можете проверить, является ли это сетью или сетевой картой, которая вас ограничивает.
5.
ASYNC_NETWORK_IO
означает, что он ожидает от клиента использования строк. sqlskills.com/help/waits/async_network_io