Медленно работает срез последних

1. BenGunn 249 31.08.20 17:15 Сейчас в теме
Есть не типовой регистр ОстаткиТоваровПоставщиков. Периодический в пределах секунды, независимый. Измерения: Номенклатура (Справочник.НоменклатураПоставщика), Поставщик (Справочник.Партнер), Склад поставщика (не типовой Справочник.СкладыПоставщиков); Ресурсы: Остаток (Число); Реквизиты: ОстатокАктуален (Булево).

Количество записей в регистре превышает 200000. В последствии будет больше.

Конфигурация УТ 11.4.6.230, платформа 8.3.16.1224, MS SQL.

Требуется сделать простейший срез последних на заданную дату:

ВЫБРАТЬ ПЕРВЫЕ 100
    ОстаткиТоваровПоставщиков.Номенклатура КАК Номенклатура, 
    ОстаткиТоваровПоставщиков.Поставщик КАК Поставщик, 
    ОстаткиТоваровПоставщиков.СкладПоставщика КАК СкладПоставщика, 
    ОстаткиТоваровПоставщиков.Остаток КАК Остаток, 
    ОстаткиТоваровПоставщиков.ОстатокАктуален КАК ОстатокАктуален
ИЗ 
    РегистрСведений.ОстаткиТоваровПоставщиков.СрезПоследних(&ДатаСреза, ) КАК ОстаткиТоваровПоставщиков
УПОРЯДОЧИТЬ ПО
    Период УБЫВ
Показать


Запрос отрабатывается более 5 минут.

Перепробовал все, включая различные комбинации индексов для измерений. Результат нулевой. Впервые сталкиваюсь с такой проблемой. Аналогичный регистр (только с регистратором) ЦеныНоменклатуры отрабатывается влёт.

Убедительная просьба, не задавайте мне вопросов "Зачем мне это надо?" - ответ мне это нужно и точка. И не поучайте "попробовать другую платформу" - пробовал, в т.ч. 8.3.15
По теме из базы знаний
Найденные решения
11. chipazawra 31.08.20 18:34 Сейчас в теме
Итоги разрешены для регистра ?
It-developer; ubnkfl; criptid; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 31.08.20 17:26 Сейчас в теме
(1) не уверен на 100%, но припоминается что в виртуальных таблицах ( типа срез последних) можно работать только с измерениями и ресурсами, а реквизиты доступны только у полной таблицы регистра... попробуйте убрать
ОстаткиТоваровПоставщиков.ОстатокАктуален КАК ОстатокАктуален

измениться ли скорость ?
3. BenGunn 249 31.08.20 17:28 Сейчас в теме
(2) Спасибо за совет. Вечером попробую и отпишусь.
23. BenGunn 249 31.08.20 19:11 Сейчас в теме
(2) Не помогло. Тот же результат. Остается одно перенести ресурс в реквизит.... Не айс, конечно
5. BackinSoda 31.08.20 17:32 Сейчас в теме
(1) Интересно, почему регистр сведений, а не накопления?
ipoloskov; +1 Ответить
8. TODD22 18 31.08.20 18:01 Сейчас в теме
(5)
Интересно, почему регистр сведений, а не накопления?

Наверное потому что это остатки поставщика.
15. BenGunn 249 31.08.20 18:58 Сейчас в теме
(8) Совершенно верно! Кто работал с торговлей мимо склада (да и не только) уже сталкивался с тонкостями учета остатков у поставщика
7. alex-l19041 8 31.08.20 17:46 Сейчас в теме
(1) вот это
УПОРЯДОЧИТЬ ПО
Период УБЫВ
в данном случае зачем ?
14. BenGunn 249 31.08.20 18:57 Сейчас в теме
(7) Потому что мне так надо. Попросил же не флудить!
9. nomad_irk 72 31.08.20 18:18 Сейчас в теме
(1) Если убрать ПЕРВЫЕ 100 и УПОРЯДОЧИТЬ ПО Период УБЫВ как изменится время выполнения запроса?
16. BenGunn 249 31.08.20 19:00 Сейчас в теме
(9) Дорогие мои, не флудите! Я работаю с 1С начиная с версии 7.5 (не 7.7!!!). Это почти 30 лет. Неужели я не попробовал ВСЕ случаи и варианты, прежде чем обратился за помощью?! Очень прошу, не флудите!!!!
20. nomad_irk 72 31.08.20 19:03 Сейчас в теме
(16)
Неужели я не попробовал ВСЕ случаи и варианты, прежде чем обратился за помощью?! Очень прошу, не флудите!!!!

По-вашему те, кто хочет вам помочь, об этом знает на телепатическом уровне?

Если выборка без доп. условий отрабатывает еще дольше, у вас часом версионный режим работы для БД не включен в MSSQL?
Фрагментация индексов таблицы насколько сильная?
22. BenGunn 249 31.08.20 19:07 Сейчас в теме
(20) Я объяснил выше. Не надо задавать вопросов не по существу. Когда (10) дает реальный совет, я его услышу. А вопросы типа "а ты выводил на экран или делал выборку?" задавайте на "Мисте". Там любят такие вопросы. Я в самом начале сказал, что ПОРОБОВАЛ ВСЁ ЧТо ВЫ МОЖЕТЕ ПРЕДЛОЖИТЬ (индексы, сортировки и пр.). А ВЫБРАТЬ ПЕРВЫЕ 100 И УПОРЯДОЧИТЬ ПО.... мне просто нужны и это не обсуждается.
24. BenGunn 249 31.08.20 19:16 Сейчас в теме
(20) Версионный режим не используется. Обычный режим перезаписи (не помню как он по-научному называется)
32. nomad_irk 72 31.08.20 19:52 Сейчас в теме
(24)исходя из ответа, чую, что мы о разном.

я про READ_COMMITTED_SNAPSHOT ON в свойствах БД MSSQL.
35. BenGunn 249 31.08.20 19:58 Сейчас в теме
(32) А, тогда о разном. Если говорить об уровне изолирования транзакций (где здесь версионирование, мне непонятно), то речь идет о тупом чтение данных и вероятность записи данных в этот момент практически нулевая. Не думаю, что здесь проблема
37. nomad_irk 72 31.08.20 20:19 Сейчас в теме
(35) При READ_COMMITTED_SNAPSHOT ON MSSQL для транзакций предоставляет копию данных = версионирование.

Вроде как СрезПоследних в случае версионника (ORACLE/Postgres/etc) тупит как не в себя.
Поэтому используют соединение таблиц саму с собой.

Ну если дело не в этом, то и проверять не стОит.
38. BenGunn 249 31.08.20 21:45 Сейчас в теме
(37) Это происходит только в тот момент, когда параллельно происходит запись. Сделано для того, что запрос на чтение видел данные которые обработаны в запросе на запись, но еще находятся в трансакции и не "легли" в базу. Это про рид комитед.

Что касается версионирования, то для ms их 4. 1) только первичная запись без возможности последующего изменения, 2) запись и последующее изменение без хранения истории, 3 и 4) варианты версионирования. Что касается всего, что не ms, понятия не имею
26. BenGunn 249 31.08.20 19:18 Сейчас в теме
(20)
Фрагментация индексов таблицы

Ночью делал REINDEX.... Тоже смотрел в сторону sql... Не-а, три нуля
4. SlavaKron 31.08.20 17:31 Сейчас в теме
Еще попробуйте без "ПЕРВЫЕ 100", просто для интереса.
13. BenGunn 249 31.08.20 18:56 Сейчас в теме
(4) Полная выборка целую вечность отрабатывается. А вот разницы между ПЕРВЫЕ 100 и ПЕРВЫЕ 500 никакой
25. SlavaKron 31.08.20 19:18 Сейчас в теме
(13) Что ж, было предположение про такой случай https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9c89d05f-d730-4f75-a648-e3e43e60d7c9/select-top-n-killing-query-performance?forum=transactsql
Кроме флуда, я бы проверил влияние RLS, если есть. Соответственно посмотреть результаты в привелигированном режиме (через внешнюю обработку Файл - Открыть не получиться).
27. BenGunn 249 31.08.20 19:23 Сейчас в теме
(25) рлс нет, привелигированный режим - три нуля. А еще делал "искусственное" выделение максимальной даты путем группировки. Еще что?
6. dka80 20 31.08.20 17:41 Сейчас в теме
как получены 5 минут? Именно Запрос.Выполнить() выполняется 5 минут или же это вывод на экран?
18. BenGunn 249 31.08.20 19:02 Сейчас в теме
42. Ranetka 23 20.06.22 09:41 Сейчас в теме
(18) что-то вы нервный больно. Так долго с 1С работали, что разучились вежливо разговаривать с людьми, которые пытаются вам помочь?
AlexGoldT; redfred; +2 Ответить
10. chipazawra 31.08.20 18:29 Сейчас в теме
Посмотри через профайлер план запроса и сделай индекс подходящий. Может индекс необходимо реорганизовать из-за высокой фрагментации. Сортировка тяжёлая операция, но у тебя она по периоду, а по нему индекс по сути отсортирован.
17. BenGunn 249 31.08.20 19:01 Сейчас в теме
(10) Предполагается, что для периодического реквизита "Период" поле таблицы индексирована и отсортирована
11. chipazawra 31.08.20 18:34 Сейчас в теме
Итоги разрешены для регистра ?
It-developer; ubnkfl; criptid; +3 Ответить
19. BenGunn 249 31.08.20 19:03 Сейчас в теме
30. BenGunn 249 31.08.20 19:44 Сейчас в теме
(11) В конечном итоге, это оказалось решением! Спасибо всем за участие!
31. chipazawra 31.08.20 19:46 Сейчас в теме
34. chipazawra 31.08.20 19:55 Сейчас в теме
(30) какой по итогу прирост получился по скорости?
36. BenGunn 249 31.08.20 20:01 Сейчас в теме
(34) сек 30 вместо 5 минут.... Но БД еще не оптимизирована и не реиндексирована. Итог расскажу при переходе на боевую, через пару тройку дней
39. muskul 01.09.20 07:31 Сейчас в теме
(11)Итоги для регистра сведений? это как работает? в качестве ликбеза
nomad_irk; +1 Ответить
40. chipazawra 01.09.20 10:08 Сейчас в теме
41. muskul 01.09.20 10:42 Сейчас в теме
12. chipazawra 31.08.20 18:39 Сейчас в теме
Запрос элементарный да объёмы не те чтобы 5 минут выполнял я, полюбому проблема в обслуживании БД.
21. BenGunn 249 31.08.20 19:03 Сейчас в теме
28. BenGunn 249 31.08.20 19:27 Сейчас в теме
(12) Итак, "А" было вами сказано. Пора говорить "Б": что по-пунктно надо сделать? И что из этих пунктов такого, что я еще не попробовал?
29. chipazawra 31.08.20 19:40 Сейчас в теме
(28) Вы можете получить план этого запроса ? Если нет, то получите его, воспользовавшись данной инструкцией https://xn----1-bedvffifm4g.xn--p1ai/articles/%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-sql-profiler/. После кидайте сюда полученный вами результат.
33. BenGunn 249 31.08.20 19:53 Сейчас в теме
(29) Запрос далеко не такой, как я спросил здесь. Сейчас я реструктуризирую базу, а это на полночи. Отметьтесь в личке, продолжим завтра
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот