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

16.07.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Ускоряем 1С Документооборот КОРП 2
.cfe 279,56Kb ver:2024.07.17
36
36 Скачать (1 SM) Купить за 1 850 руб.

У Документооборота всегда были неважные параметры по производительности, когда в нем работает более 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 оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

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

06.06.2024    9259    Evg-Lylyk    61    

44

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

13.03.2024    5097    spyke    28    

49

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

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

13.03.2024    7573    vasilev2015    20    

42

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

2 стартмани

15.02.2024    12419    241    ZAOSTG    80    

115

HighLoad оптимизация Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Принимать, хранить и анализировать показания счетчиков (метрики) в базе 1С? Почему бы нет? Но это решение быстро привело к проблемам с производительностью при попытках построить какую-то более-менее сложную аналитику. Переход на PostgresSQL только временно решил проблему, т.к. количество записей уже исчислялось десятками миллионов и что-то сложное вычислить на таких объемах за разумное время становилось все сложнее. Кое-что уже практически невозможно. А что будет с производительностью через пару лет - представить страшно. Надо что-то предпринимать! В этой статье поделюсь своим первым опытом применения СУБД Clickhouse от Яндекс. Как работает, что может, как на нее планирую (если планирую) переходить, сравнение скорости работы, оценка производительности через пару лет, пример работы из 1С. Все это приправлено текстами запросов, кодом, алгоритмами выполненных действий и преподнесено вам для ознакомления в этой статье.

1 стартмани

24.01.2024    5669    glassman    18    

40

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    14010    doom2good    49    

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