Query memory grants. Часть 1: куда девается память?
Пересказ статьи Arthur Daniels. Query memory grants part 1: Where does the memory go?
Давайте поговорим о том, как запросы используют память, а именно, в плане выполнения. Одним из операторов запроса, который использует память, является сортировка. Чтобы продемонстрировать это, я напишу запрос с предложением ORDER BY и покажу план выполнения.
Запрос, который запрашивает выделение памяти
Используется StackOverflow2010 (благодарю Brent Ozar команду Stack Overflow за предоставление дампа данных):
SELECT Id, Type
FROM dbo.PostTypes
ORDER BY Type;
Вот результаты, если они вас интересуют.
Посмотрим план выполнения.
Сначала давайте поглядим на свойства оператора SELECT.
Это выделение памяти на весь запрос. Поскольку мы знаем, что оператор Sort использует память, давайте посмотрим на него, чтобы в этом убедиться.
Куда делось выделение памяти?
Мы можем подтвердить, что оператор сортировки затребовал память, если посмотрим на долю памяти оператора.
Дальше сложнее. План выполнения весьма полезен для определения того, на что выделяется память, но, когда несколько операторов запрашивают выделение памяти, это становится значительно усложняется.
Например, выделение памяти может повторно использоваться несколькими операторами в плане выполнения (источник информации).
Я продолжу это серию, чтобы поговорить подробней об использовании памяти запросом.
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой