Почему запросы SQL Server не используют более 7 Мбайт /с дискового ввода-вывода
У меня есть SSD, который, используя IOmeter test, показывает производительность более 200 Мбайт /с. Однако, когда я запускаю любой SQL-запрос с локальной машины, монитор ресурсов Windows никогда не показывает диск IO выше 7 МБ /с. Это справедливо даже для запросов, которые занимают более 2 минут для запуска. Что может быть узким местом в том, что он использует только 7 Мбайт /с SSD?
Я запускаю:
- Стандарт Windows Server 2012
- SQL server 2008 r2
- Intel i7 3820
- 32 ГБ оперативной памяти
- sandisk SSD
1 ответ
Из цепочки комментариев похоже, что вы интерпретируете ASYNC_NETWORK_IO
, ожидая, что проблема связана с сетью. Это (как правило) нет.
Поскольку @MartinSmith намекнул (в два раза), наиболее вероятным объяснением этого является SSMS или приложение, которое вы используете, не потребляя результаты так же быстро, как SQL Server. Следуйте любому из предложенных методов, чтобы удалить потребление строк из вашего измерения, и вы получите истинное (r) изображение максимальной пропускной способности ввода-вывода:
На всякий случай, если вы еще этого не сделали, вам, очевидно, понадобится DBCC DROPCLEANBUFFERS
, чтобы убедиться, что данные фактически прочитаны с диска чем буферный кеш. Обычные оговорки «только на тест, не делайте этого в активной живой среде» и т. Д. Применимы.
Почитайте пару своих комментариев:
При выполнении запроса, который возвращает 9 миллионов строк, использование ЦП будет оставаться около 13%, а 9% относится к sqlserver ... не будет ли он возвращать результаты быстрее, чем 3 минуты, если все данные были в ОЗУ?
Что именно мы тестируем здесь, как и почему? Если ваш запрос в 9 миллионов строк - это что-то другое, кроме SELECT * FROM dbo.SomeTable
, то есть 1001 фактор, который входит в игру, кроме как только raw IO пропускная способность.