Коллеги, добрый вечер. Для теста сделал в базе 1с свой регистр сведений с 1 измерением. Создал запрос запрос к этому регистру с самим собой. На mssql. План запроса выдал nested loops. Логично. Записал туда 10к записей, выполнил запрос. Ожидал тоже вложенные циклы. Выдало мердж джоин. Почему так? В курсах говорилось что кэшируется 1 раз запрос. По идее должно было быть тоже нестед лупс. Потом я должен был выполнить DBCC FREEPROCCAHCE и только тогда должно было измениться соединение. Но оно поменялось сразу. То есть стазу при запросе выполнился Мердж джони. При чем кол-во плановое и фактическое строк 10к. Подскажите, пожалуйста, в какой момент мог обновиться процедурный кэш? Или курсы врут и кэшируется не первый запрос? Текст запроса не менялся.
Текст запрос, если кому надо:
ВЫБРАТЬ
РегистрСведений1.Измерение1 КАК Измерение1
ИЗ
РегистрСведений.РегистрСведений1 КАК РегистрСведений1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений11
ПО РегистрСведений1.Измерение1 = РегистрСведений11.Измерение1
Текст обработки по заполнения регистра:
//для ит = 1 по 10000 цикл
//ф = РегистрыСведений.РегистрСведений1.СоздатьМенеджерЗаписи();
//ф.Измерение1 = Строка(Новый УникальныйИдентификатор);
//ф.Записать();
//КонецЦикла;
(1) Ну он по делу же говорит. Планы запросов кэшируются. Другое дело, что перед выполнением запроса идет оценка статистики.
И если, в настройках базы стоит AUTO_UPDATE_STATISTICS - перед выполнением запроса будет производится оценка. НО.
Статистика будет считаться устаревшей, если будут достигнуты пороговые изменения в таблице. Поэтому результат AUTO_UPDATE_STATISTICS может быть недостаточно точный. Поэтому и нужны регламентные.
AUTO_UPDATE_STATISTICS_ASYC - почти тоже самое, только запрос не ждет обновления статистики а запускается на выполнение при этом создается фоновый процесс обновления статистики и 2 раз выполнения запроса будет использоваться новая стата.
(4) да, спасибо, знаю. Для теста запросов создал просто
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший