Потребность в дисковом вводе / выводе сильно варьируется в зависимости от многих факторов, в том числе:
- Сколько данных уже находится в оперативной памяти
- Структура вашей схемы (индексы, ширина строки, типы данных, триггеры и т. Д.)
- Характер ваших запросов (объединения, несколько строк и ряд строк и т. Д.)
- Методология доступа к данным (ORM против набора, одна команда или пакетная обработка)
- Соотношение чтения и записи
- Состояние фрагментации диска (базы данных, таблицы, индекса)
- Использование твердотельных накопителей и вращающихся носителей
По этим причинам лучший способ оценить загрузку рабочего диска обычно заключается в создании небольшого прототипа и его сравнительном тестировании. Используйте копию производственных данных, если можете; в противном случае используйте инструмент генерации данных для создания БД такого же размера.
Имея примеры данных, создайте простое приложение для тестирования производительности, которое будет производить различные типы запросов, которые вы ожидаете. Масштаб памяти, если вам нужно.
Измерение результатов с помощью счетчиков производительности Windows. Наиболее полезные статистические данные относятся к физическому диску: время на передачу, количество передач в секунду, глубина очереди и т. Д.
Затем вы можете применить некоторые эвристики (также известные как «опыт») к этим результатам и экстраполировать их на предварительную оценку требований к производственному вводу / выводу.
Если вы абсолютно не можете построить прототип, тогда можно сделать некоторые обоснованные предположения, основанные на первоначальных измерениях, но это все еще требует работы. Для начала включите статистику:
SET STATISTICS IO ON
Перед запуском тестового запроса очистите кэш ОЗУ:
CHECKPOINT
DBCC DROPCLEANBUFFERS
Затем выполните свой запрос и посмотрите на физическое чтение + чтение с опережением чтения, чтобы увидеть требования ввода-вывода физического диска. Повторите в некотором миксе, не очищая кеш оперативной памяти, чтобы понять, насколько кеширование поможет.
Сказав это, я бы рекомендовал не использовать только IOPS в качестве цели. Я понимаю, что поставщики SAN и ИТ-менеджеры, похоже, любят IOPS, но это очень вводящая в заблуждение мера производительности дисковой подсистемы. Например, при переходе от последовательного ввода-вывода к случайному может быть разница в доставляемых IOPS 40: 1.