Безбожно тормозит запрос СрезПоследних #806982


#0 by user-ok
база УТП для Украины (аналог КА) после перехода на клиент-серверный вариант работы стали долго (6-10 минут) проводиться некоторые документы "Отчет о розничных продажах" Замер производительности показывает что очень долго выполняется запрос: Запрос простой до безобразия, на скрине показаны замеры на двух "соседних" документах, но проблема в том что документ, который перед этим провелся нормально, при перепроведении так же тупит :( 1С 8.3.10.2561. Пробовал на 8.3.9.2233 MS SQL 2012 SP2 пробовал на боевом сервере (Сервер 1С на виртуалке, SQL на железе) и на тестовом сервере (все на железе, на одном сервере, я во время теста на сервере был один) - разницы нет, так что дело не в железе ТиИ прогонял. Не помогло SELECT TOP 10 *   FROM [MyBase].[dbo].[_InfoRg13775]   WHERE _Period IS NULL пустой (InfoRg13775 - Регистр сведений ЦеныАТТ) куда еще посмотреть???? :( На файловой, ожидаемо, летает...
#1 by Волшебник
Всё на Украине не слава богу...
#2 by xxTANATORxx
составной тип значения в измерениях есть?
#3 by user-ok
Давайте без политики, пожалуйста. Склад, Номенклатура, ХарактеристикаНоменклатуры, все с типами соответствующих справочников. Не составные. Больше измерений нет
#4 by youalex
профайлер, планы запроса что говорят? Украина без политики - это фантастика.
#5 by xxTANATORxx
мошт скуль тупит регламентные операции на скуле настроены?
#6 by PiterPrg
А статистику обновляли?
#7 by Волшебник
Проиндексируй измерения Номенклатура и Склад
#8 by xxTANATORxx
а что в списках складов и номенклатуры, мошт там треш?
#9 by kiruha
Список номенклатуры, склад во временную таблицу, проиндексировать в виртуальной (Склад, Номенклатура) В (Выбрать ВрТаб.Склад, ВрТаб.Номенклатура ИЗ ВрТаб) Если организация есть, ее тоже добавить
#10 by user-ok
мошт скуль тупит вполне возможно, даже скорей всего. Но одинаково тупят 2 скуля  на двух серверах... А статистику обновляли? Да, забыл указать. После обновления статистики один-два документа проводятся норм. дальше тупняк даже при перепроведении тех же. Но не обновлять же статистику после каждого документа... Нет там треша. Да и один и тот же документ в одной и той же базе проводится то пару сек. то 10 мин. Прямо в регистре? или для начала как в . Кстати Номенклатуру в регистре индексировать не дает (Стоит галка "Ведущее")
#11 by user-ok
Утром с этого начну. Сейчас нужно бежать, если есть еще мысли - кидайте
#12 by Волшебник
Прямо в регистре
#13 by H A D G E H O G s
Вы не победите, пока план запроса в xml не соберете. Вот и все мысли.
#14 by kiruha
если вариант (Склад, Номенклатура) то номенклатуру можно не индексировать - там уже есть индекс по набору измерений
#15 by user-ok
В складах ровно 5 элементов, стоит индексировать? А Номенклатуру, напомню, индексировать не дает
#16 by Волшебник
Убери отбор по складу
#17 by Леха Дум
Нужно попробовать убрать отбор по номенклатуре в условии формирования среза, а уже итоговую таблицу отфильтровать соединением с временной таблицей по полю номенклатура. Индексировать временную не надо. Отбор по складам в срезе оставить - их должно быть относительно мало.
#18 by kiruha
ИЗ     РегистрСведений.ЦеныАТТ.СрезПоследних(&Дата
#19 by g00d
периодические таблицы всегда тормозят при использовании отборов или в соединениях, просто нужно понять что это вирт.таблица не самым простым способом расчета последних. Самый оптимальный вариант, сделать вирт.таблицу - реальной. делаете второй непериодический регистр сведений копию нужного с таким же названием и приставкой например Текущие, (БлаБла_Текущие). Добавляете подписку на запись периодического регистра пример для ЦеныНоменклатуры ---- ---- Правите нужны запросы на новую таблицу. Делаете первичное заполнение и наслаждаетесь необыкновенно высокой скоростью
#20 by H A D G E H O G s
Откройте для себя ИтогиПоСрезуПоследних. Вылезайте уже из каменного века.
#21 by g00d
или вот более универсальный пример, добавляем в модуль периодического регистра Процедура ПриЗаписи(Отказ, Замещение)     Если Не Отказ Тогда
#22 by H A D G E H O G s
Ну и вспомните, что нужны и неоперативные записи.
#23 by H A D G E H O G s
Но у автора - другая проблема. Проблема с SQL
#24 by H A D G E H O G s
Особенно позабавил вариант . Образчик прям ядского треша.
#25 by g00d
а вы сравнивали  скорость работы ИтоговПоСрезуПоследних и регистра сведений с расчетом среза последних  при записи? В особо клинических случаях, помогает даже с регистрами накоплений. в базах большим количеством изменений разница ОЧЕНЬ существенна.
#26 by g00d
+ регистры сведений позволяют присоединять их через ПВХ как характеристики товаров, т.е. к примеру присоедениить все виды цены или остатки по складам к номенклатуре как свойства. А затем легко использовать их в дин.списках и отчетах
#27 by H A D G E H O G s
"а вы сравнивали  скорость работы ИтоговПоСрезуПоследних и регистра сведений с расчетом среза последних  при записи? " Нет. Не сравнивал, так как это - одно и тоже, только 1 вариант - это платформенная фишка и как бы нет необходимости самому пилить костыль. А что - вы сравнивали? Про РегНакопления - нифига не понял.
#28 by kiruha
Я так понимаю провели замеры ? Или так - пальцы покидать
#29 by H A D G E H O G s
Конечно провели.
#30 by Student MAI
1. Запустить реиндексацию базы. Чтобы привести в порядок индексы. Вы дергали галочки индексации или ведущих измерений? Они сами не встанут, только после переиндексации. Может вы и порядок измерений меняли? Возможно, кластерный индекс перестроился при обновлении конфигурации ИБ, возможно нет. 2. Что характеристика номенклатуры вообще делает в регистре??? Если она еще и измерением является - совсем плохо. Используй конструкцию "Выразить". Это облегчит агонию ИБ. 3. PS я б ничего не индексировал, если номенклатура со складом первые 2 измерения регистра. Если это не так - подвинуть их в начало. 4. Уволиться.
#31 by Ненавижу 1С
#32 by echo77
Сколько сотен тысяч записей в РС? Помню, на подобную ситуацию натыкался - в РС: 600К записей, всего 3 измерения. Делаем срез с отбором по одному измерению - занимает 20 минут. Делаем срез без отбора - работает быстро. Я так и не разобрался в чем проблема. Прямо интересно
#33 by Волшебник
план запроса разный
#34 by Фрэнки
в силу вечернего времени не вникаю в подробности, но я правильно увидел по топику и по ветке, что в этом срезе последних здесь постгри не виноватый?
#35 by user-ok
стыдно сказать, 8321
#36 by VS-1976
Скорее всего нужно переиндексировать и/или пересоздать итоги.
#37 by xxTANATORxx
как определил что это постгри?
#38 by Волшебник
Можно создать ещё один регистр, который назвать ЦеныСрезПоследних. При записи основного регистра (или с какой-то регулярностью) обновлять второй. Запрос ко второму регистру сведений будет моментальный.
#39 by user-ok
Ну он же сказал "Постгри не виноватый" Сделал то, что очень не рекомендуют авторы всех книжек по запросам: Перенес условие из параметров виртуальной таблицы в обычное условие                    |    ЦеныПродажные.Номенклатура В(&СписокНоменклатуры)"; Что-то похожее рекомендовали выше но с ВТ и индексами. Летает. Все равно остается вопрос как скуль заставить строить здравые планы не только при первом проведении после Update statistics, но и весь день...
#40 by Волшебник
лучше внутри скобок оставь отбор по номенклатуре
#41 by Timon1405
Дополнять список номенклатуры пустыми позициями до 1000 штук. тогда Номенклатура В(&СписокНоменклатуры) всегда будет конвертироваться в _field IN (&P1,...&P1000) и план для таких запросов будет один.
#42 by user-ok
Но тогда включаются тормоза :( а так 00000000221 Время проведения - 4 00000000222 Время проведения - 5 00000000225 Время проведения - 4 00000000217 Время проведения - 5 00000000218 Время проведения - 4 00000000219 Время проведения - 4 00000000220 Время проведения - 5 00000000221 Время проведения - 3 00000000222 Время проведения - 4 00000000223 Время проведения - 5 Неидеально, но далеко не 10-15 минут Теперь заставить бы скуль здраво строить планы с отбором в скобках...
#43 by Волшебник
Сделай в регистре измерение Номенклатура первым.
#44 by VS-1976
Если список номенклатур большой, то IN работает плохо и возможно стоит сделать примерно так:
#45 by Timon1405
+ план будет одинаковый
#46 by dmrjan
Интересно было бы посмотреть результат запроса в PostgreSQL 10, там они с планом запроса плотно поработали. Как раз подходит для 1С. Бартунов видео выложил. Только когда новую версию под 1с выпустят?
#47 by user-ok
Помогло Возвращаю порядок измерений назад - тормоза возвращаются Оставлю пока так Всем спасибо не то чтоб большой. в проблемных документах приблизительно по 150 строк Поэкспериментировал с документом на 20 строк - проводится влет, в профайлере при этом один запрос с трудночитаемым для меня планом :(, но одним При проведении обычного документа на 150 строк в профайлере огромная куча мелких запросов, в которых я просто теряюсь :( Соответственно и планов куча...
#48 by H A D G E H O G s
Я надеюсь 4-5 - это секунды :-)
#49 by Волшебник
Одной проблемой на Украине меньше... :)
#50 by Леха Дум
конструкция В равносильна вроде как отбору по условию ИЛИ. Чем больше элементов в массиве, тем труднее. Потому я взял за правило, что если в массиве не ограниченное и, как правило, не прогнозируемое число элементов, делать через ВТ и последующее соединение большой таблицы с отбором из ВТ. Алгебра множества она такая....
#51 by breezee
А статистику смотрели по запросу? Может у вас там в регистре до сего дня было 10 записей, а сегодня 50 млн, и запрос всю таблицу сканит (Index scan использует в sql). Смотрели запрос в профайлере? Если план "трудночитаемый" то поставьте в профалере отбор по настройке "SHOWPLAN_XML STATISTICS PROFILE" или как-то так, на память не помню. Он план в xml показывает. После того как покажет вас будет интересовать ожидаемая выборка и действительная в операторе и сами операторы. Запрос в ветке не нашел но проблемы основные могут быть: 1)При связи будет оператор "Nested loops" 2)При поиске в таблице будет "Table scan"или еще какой скан.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С