Почему скорость ввода-вывода SQL Server намного медленнее емкости диска?

Почему скорость ввода-вывода SQL Server намного медленнее емкости диска?

Я использую SQL Server 2012 и делаю простой запрос SELECT *, я вижу, что мой дисковый ввод-вывод в мониторе производительности < 10 МБ/с. Однако, если я делаю резервную копию базы данных, я вижу значения > 200 МБ/с.

Почему SQL-сервер так медленно извлекает данные?

решение1

Причина, по которой вы видите только 10 МБ/сек, заключается в том, что эти счетчики производительности рассматривают данные от одной секунды к другой, а не отдельные действия в течение того же периода времени. Таким образом, ваш запрос мог извлечь 10 МБ менее чем за секунду, но это будет зарегистрировано в Performance Monitor только как 10 МБ/сек.

Резервное копирование тянет большие объемы данных по всем направлениям, поэтому оно будет регистрироваться на полной скорости диска. Если бы оно могло регистрировать дисковые операции ввода-вывода для отдельных действий, оно, вероятно, сказало бы 200 МБ/с или что-то подобное, возможно, даже больше для небольших пакетов данных, поскольку скорость становится почти невозможно измерить для небольших пакетов.

Надеюсь это поможет.

решение2

Оказывается, все мои чтения из запроса шли прямо из памяти, а не с диска. Я смог это определить, выполнив следующую команду перед запросом:

SET STATISTICS IO ON

После этого я запустил запрос и посмотрел на вкладку сообщений для статистики. Логические чтения из памяти, физические чтения с диска.

Связанный контент