Что вы подразумеваете под «сколько памяти потребляет запрос?» И почему именно вы хотите это знать?
Я не думаю, что память в SQL Server работает так, как вы можете себе представить -Управление памятью в SQL Server - сложная тема невероятно - вы можете легко написать целые книги об управлении памятью в SQL Server.Я не могу утверждать, что знаю , что много об управлении памятью SQL Server, но я знаю, что практически нет полезной информации, которую можно экстраполировать, зная, сколько памяти занимает один запрос.
Тем не менее, если вы действительно хотите понять, что происходит с памятью при выполнении запроса, то я, вероятно, начну с просмотра пула буферов.Почти вся память в SQL Server организована в куски памяти размером 8 КБ (такого же размера, что и страница), которые можно использовать для хранения чего угодно - от страницы данных или страницы индекса до планов кэшированных запросов.Буферный пул является основным компонентом памяти в SQL Server. Все 8 КБ фрагментов памяти, которые не используются в других местах, остаются в пуле буферов, который будет использоваться в качестве кэша для страниц данных.
Обратите внимание, что для страницы данныхили индексная страница, которую нужно использовать, она должна существовать в памяти - это означает, что, если она еще не существует в памяти в другом месте, готовом к использованию, должен быть доступен свободный буфер для подготовки страницы к.Пул буферов служит как пулом «расходуемых» свободных буферов, так и кешем страниц, уже присутствующих в памяти.
Вы можете проверить, что находится в пуле буферов, используя DMV, в этом списке есть подходящий запрос.страница:
Очистив пул буферов с помощью команды DBCC DROPCLEANBUFFERS
( DONT DOЭТО НА ПРОДУКЦИОННОМ СЕРВЕРЕ SQL !!! ) и затем, выполняя ваш запрос, теоретически новые страницы, которые появляются в пуле буферов, должны быть страницами, которые использовались в последнем запросе.
Это может дать вам приблизительное представление о страницах данных и индексов, используемых в запросе, однако не охватывает другие области SQL Server, где используется память, например, в кеше плана запросов, SQL Server Workers.и т. д.
Как я уже говорил, управление памятью в SQL Server является сложным - если вы действительно хотите узнать больше, я рекомендую вам купить книгу по внутренним компонентам SQL Server.
Обновление: Вы также можете использовать статистику запроса для просмотра совокупной статистики производительности для запроса, включая «физическое чтение» (чтение страниц с диска) и «логическое чтение» (чтение страниц из пула буферов).См. на этой странице , чтобы найти подходящий запрос.
Это может также дать вам несколько советов о том, сколько памяти использует запрос, но будьте осторожны - играя вокруг, я нашел запросы, которые выполняли гораздо более логичныечитает, а не выполняет физическое чтение, что, насколько я могу понять, означало, что они читают одни и те же страницы снова и снова, то есть 100 логических операций чтения = 100 страниц, используемых в пуле буферов.