Кеширует ли Sql Server (v>2008) результаты запросов?
От: B7_Ruslan  
Дата: 03.06.16 14:05
Оценка:
Кеширует ли Sql Server (v>2008) результаты запросов или промежуточные данные выполнения запросов?
Входные данные такие:
пользователи в интерфейсе используют постраничный просмотр с сортировкой и фильтрами, поэтому генерируются однообразные но сложные запросы.
В плане запросов используется оператор Table Spool — как я понял запись промежуточных данных в temdb.
Для построения запроса используется Linq, провайдер — Linq2Sql
Re: Кеширует ли Sql Server (v>2008) результаты запросов?
От: Spinifex Россия https://architecture-cleaning.ru/
Дата: 03.06.16 15:24
Оценка: -1
Здравствуйте, B7_Ruslan, Вы писали:

B_R>Кеширует ли Sql Server (v>2008) результаты запросов или промежуточные данные выполнения запросов?

B_R>Входные данные такие:
B_R>пользователи в интерфейсе используют постраничный просмотр с сортировкой и фильтрами, поэтому генерируются однообразные но сложные запросы.
B_R>В плане запросов используется оператор Table Spool — как я понял запись промежуточных данных в temdb.
B_R>Для построения запроса используется Linq, провайдер — Linq2Sql

Это все можно посмотреть из плана запроса — там все написано. Может использовать, а может не использовать. Зависит и от эффективности и от того как запрос написан. И от того какова загрузка сервера. В любой момент времени SQL Server пытается максимально эффективно использовать ресурсы и если использование tempdb спасает ситуацию он ее использует. Опять же у вас могут использоваться либо временные таблицы, либо табличные переменные (правда у вас Linq2Sql — скорее всего не ваш случай).
Если у вас появился Table Spool, то да здесь используется tempdb.

Table Spool
The Table Spool physical operator scans the input and places a copy of each row in a hidden spool table (stored in the tempdb database and existing only for the lifetime of the query). If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input.

Резюмирую — смотрите конкретный план.
Re: Кеширует ли Sql Server (v>2008) результаты запросов?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.06.16 19:39
Оценка: 8 (2) +2
Здравствуйте, B7_Ruslan, Вы писали:

B_R>Кеширует ли Sql Server (v>2008) результаты запросов или промежуточные данные выполнения запросов?

B_R>Входные данные такие:
B_R>пользователи в интерфейсе используют постраничный просмотр с сортировкой и фильтрами, поэтому генерируются однообразные но сложные запросы.
B_R>В плане запросов используется оператор Table Spool — как я понял запись промежуточных данных в temdb.
B_R>Для построения запроса используется Linq, провайдер — Linq2Sql

Нет.
Результаты запроса никак не кешируются.
Spool это временная таблица в рамках выполнения одного запроса. После выполнения память освобождается.

Но прочитанные при обращении страницы из памяти не выгружаются, поэтому если запросы однотипные и возвращают примерно одни и те же данные, то физических чтений будет сильно меньше, чем логических.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.