Ускоряем 1С:Документооборот КОРП 2.1

12.03.25

База данных - HighLoad оптимизация

Хотя документооборот не является классической системой регламентированного учета, но скорость его работы тоже важна. Учитывая, что им пользуются руководители высшего звена и их помощники, которые крайне трепетно относятся к простоям и "тормозам". Данное расширение ускоряет работу основных операций документооборота. Как-то расчет прав, сохранение внутренних, входящих, исходящих документов. В зависимости от количества пользователей и объектов в базе ускорение может быть с "нескольких минут до секунд". А пересчет прав при делегировании у меня сократился с 51 000 сек до менее 10.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Ускоряем 1С Документооборот КОРП 2
.cfe 279,56Kb ver:2024.07.17
62 4 550 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

У Документооборота всегда были неважные параметры по производительности, когда в нем работает более 100 сотрудников.

В нашей компании более 800 человек одновременно онлайн, много дочерних организаций и между ними обмен документами. Задача производительности одна из критичных.

При анализе ситуации с ДО 2.1 было выявлено несколько групп "тормозов":

1. Долгая запись документа ДО (входящий, исходящий, внутренний). Причина аналогичная у всех трех объектов. Перед записью проверяет изменились ли права и надо ли перезаписывать. Проверка идет кодом 1С - два цикла. Добавлено, удалено. При небольших объемах прав на объект это "летает". Но при значительных (тысячи и более) запись документа уже может идти минутами. Замена на SQL запрос позволило ускорить процесс до секунд, практически зависимо от количества прав на объект.

2 Пересчет прав. Общий модуль. Тут ситуация сложнее  Идет не быстро. Добавление индексов в типовой запрос ситуацию улучшили, но!

2.1. Несколько раз в неделю "зависает" пересчет прав на полдня. Так как мешает работе пользователей -процесс снимали или пересчет прав останавливали, но это не выход.

2.2. Сам запрос нашли в скуле, но там временные таблицы, что в них и почему так долго идет, причем не всегда такое с таким же запросом,  непонятно с ходу, где копать.

На помощь пришел инструмент мониторинга - 1smonitor. Дождались, когда дойдет до конца, монитор показал весь путь к проблемному вызову, ситуация стала яснее.

Причина - пересчет в режиме "делегирование" - когда пересчитывается огромная таблица всех прав по делегированию. 

Типовой запрос - два вложенных соединения, при чем как всегда связи "перекрестные" - то есть,

1 - связь первой таблицы со второй, по полям первой и второй таблицы 

2 - связь третьей таблицы по полю первой + поле из второй

Естественно, SQL не может предсказать ситуацию и использовать подходящий индекс и получает из трех таблиц все строки и вяжет все со всеми.

Так как все три таблицы содержат по  десяткам миллионов строк данных - запрос в итоге строился 51 000 сек.

Хорошо подумав, нашел решение, как этот типовой механизм динамического построения запросов переделать.

Вынес первую связку в отдельную временную таблицу с нужными полями для связи.

И потом уже "вязал" временную таблицу с третьей.

В итоге время построения запроса сократилось с 51000 сек до 10 сек.

Плюс так как этот же запрос вызывался при открытии файлов - тоже получилось ускорение. 

Ускорение сделано в виде расширения, изменения "обернуты" в "ИзменениеИКонтроль" -поэтому в худшем случае не применяется и ничего не сломают при обновлении релиза.

Подходит под последнюю версию типового ДО 2.1.

Естественно, при применении проверяйте, что нет конфликтов и ошибок применений.

 

08.07.2024

Добавлено ускорение в фоновое задание "Эскалация задач" - переделан запрос. На наших 21 000 000 задач было порядка 300 сек, стало 6

 

16.07.2024

Улучшено ускорение в фоновое задание "Эскалация задач" - переделан запрос. На наших 21 000 000 задач было порядка 300 сек, итого стало 0.07 сек

Проверено на следующих конфигурациях и релизах:

  • Документооборот КОРП, релизы 2.1.34.1

Вступайте в нашу телеграмм-группу Инфостарт

Документооборот тормоза ускорение

См. также

HighLoad оптимизация Программист 1C:ERP Бесплатно (free)

Использование оператора «В» для полей или данных составного типа (например, Регистратор) может приводить к неочевидным проблемам.

10.11.2025    5265    ivanov660    48    

51

HighLoad оптимизация Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    8109    ivanov660    39    

61

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    10536    ivanov660    13    

64

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    16507    Evg-Lylyk    73    

46

HighLoad оптимизация Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    8109    spyke    29    

54

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    11437    vasilev2015    22    

47
Отзывы
6. Viktor_Ermakov 394 02.07.24 08:14 Сейчас в теме
самое главное написать ребятам разработчикам ДО (Безбородову Александру) что бы эти узкие места в типовом решении исправили!
d4rkmesa; mefalcon; Tantor; mart-sha; ilyav; Дмитрий74Чел; user594342_kosushko; +7 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. titanium2008 47 01.07.24 16:05 Сейчас в теме
Спасибо за проделанную работу, а форму- Задачи мне не оптимизировали случаем?) У нас она что то тормозить стала
2. ZAOSTG 192 01.07.24 16:23 Сейчас в теме
(1)Оптимизировал много -просто решил часть в расширение и в общий доступ на пользу обществу.
Сейчас гляну что по задаче мне оптимизировал - там помоемому больше кода - много раз получало язык и чето-еще -вынес в повторно используемый модуль и "полетело".
Вечером гляну.
я бы посоветовал мою другую обработку " в пару" - анализ SQL глазами 1с-ника
там много интересного накопал пока писал -и постарался сделать ее максимально простой в понимании
3. titanium2008 47 01.07.24 16:37 Сейчас в теме
Спасибо, если получится - выложите тоже . А то Задачи мне очень больная тема для нас))
7. ZAOSTG 192 03.07.24 09:45 Сейчас в теме
(3)Явно не нашел чтобы в этой форме что-то менял - видимо или оптимизировал общие запросы, или переделывал индексы чтобы скуль не ошибался
Совет -поставить 1smonitor как качественный сбор и анализ
и как минимум мою обработку анализа скуля - сразу покажет что не так со скулем, если тек запросы идут что с ними не так и тп
4. Serg O. 315 01.07.24 16:58 Сейчас в теме
а на более ранней версии ДО 2.1.32.6 будет работать ?
или надо до 2.1.34.1 обязательно обновляться ?
5. ZAOSTG 192 01.07.24 17:36 Сейчас в теме
(4) могу попробовать там запустить - но 99% что будет. думаю там этот кусок не менялся давно
6. Viktor_Ermakov 394 02.07.24 08:14 Сейчас в теме
самое главное написать ребятам разработчикам ДО (Безбородову Александру) что бы эти узкие места в типовом решении исправили!
d4rkmesa; mefalcon; Tantor; mart-sha; ilyav; Дмитрий74Чел; user594342_kosushko; +7 Ответить
8. titanium2008 47 03.07.24 21:05 Сейчас в теме
(6) они уже все в ДО 3.0 . Думаю 2.1 теперь по остаточному принципу)
9. titanium2008 47 03.07.24 21:05 Сейчас в теме
(7) спасибо, попробуем
Для отправки сообщения требуется регистрация/авторизация