|
Когда обновляется статистика на ms sql? | ☑ | ||
---|---|---|---|---|
0
breezee
22.06.24
✎
23:16
|
Коллеги, добрый вечер. Для теста сделал в базе 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.СоздатьНаборЗаписей(); //ф.Записать(); ф = РегистрыСведений.РегистрСведений1.СоздатьНаборЗаписей(); для ит = 1 по 10000 цикл фф = ф.Добавить(); фф.Измерение1 = Строка(Новый УникальныйИдентификатор); КонецЦикла; ф.Записать(); !!!Специально оставил то что выполнял закомменчено. Может этот как-то виляет |
|||
1
timurhv
22.06.24
✎
23:40
|
>В курсах говорилось что кэшируется 1 раз запрос.
В каких курсах, кто говорит? >Или курсы врут и кэшируется не первый запрос? https://wiki.it-kb.ru/1c/setting-up-microsoft-sql-server-for-1c-enterprise-8-3/automatic-creation-and-updating-of-statistics-for-the-database Тут что установлено? Запрос никак не может кэшироваться, только план запроса может на основе статистики. |
|||
2
H A D G E H O G s
22.06.24
✎
23:43
|
(1) Ну он по делу же говорит. Планы запросов кэшируются. Другое дело, что перед выполнением запроса идет оценка статистики.
И если, в настройках базы стоит AUTO_UPDATE_STATISTICS - перед выполнением запроса будет производится оценка. НО. Статистика будет считаться устаревшей, если будут достигнуты пороговые изменения в таблице. Поэтому результат AUTO_UPDATE_STATISTICS может быть недостаточно точный. Поэтому и нужны регламентные. AUTO_UPDATE_STATISTICS_ASYC - почти тоже самое, только запрос не ждет обновления статистики а запускается на выполнение при этом создается фоновый процесс обновления статистики и 2 раз выполнения запроса будет использоваться новая стата. |
|||
3
breezee
22.06.24
✎
23:52
|
(1) Спасибо, реально автопадейст он стоит. В курсах такого не было) (2) Большое спасибо за подробный ответ
|
|||
4
Волшебник
23.06.24
✎
07:39
|
(0) РегистрСведений1 - плохое название регистра
Измерение1 - плохое название измерения |
|||
5
breezee
23.06.24
✎
07:50
|
(4) да, спасибо, знаю. Для теста запросов создал просто
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |