Влияние БСП на производительность базы 1С с добавленными метаданными

Повод для статьи — заметное снижение быстродействия при переводе учета с УТ 11.1 на 11.4 по «нашим» не стандартным метаданным (регламенты работы с массовым заполнением/проведением документов/регистров). Предварительно причину увидел во влиянии БСП. Была создана тестовая подсистема, быстродействие которой оцениваем в демобазе «Управление торговлей». С включенными и выключенными подписками БСП.

   Повод для исследования — заметное снижение быстродействия при переводе учета с УТ 11.1 на 11.4  по «нашим», не стандартным метаданным (регламенты работы с массовым заполнением/проведением документов/регистров).

   В первом приближении, одна из причин обнаружилась в «лишней работе» подписок БСП.

   Для исследования проблемы была создана простая тестовая подсистема. (1 — справочник, 1 — документ, 1 — регистр сведений, 1 — регистр накопления). Подсистему добавил в демо базу «Управление торговлей».

   Сравниваем результаты по операциям с «нашими» метаданными в «обычной» файловой демобазе «Управление торговлей» и базе, где часть подписок БСП отключена расширением по обрабатываемым типам.

 

Результаты тестов.

 

Операция

5000 итераций

Управление

торговлей

демо

принимаем за 100%

(эталон)

(мс)

Управление

торговлей

демо

с отключенными подписками БСП для тестовой подсистемы

 

(мс)

% от  эталона

 

меньше 100% — быстрее

1

Справочник создание/заполнение

19873

 

18593

 

93,5

2

Справочник изменение

13605

 

11195

 

82,2

3

Справочник удаление

265465

 

 

176958

66,5

4

Регистр заполнение

11011

 

 

9817

 

89,1

5

Регистр изменение

12088

 

 

11028

91

6

Регистр удаление

1

1

100

7

Документ создание/заполнение/проведение

44057

 

38204

 

86,7

8

Документ изменение/проведение

38938

 

33628

 

86,3

9

Документ удаление

367001

 

214913

 

58,5

 

Конечная цель. Если по ДОБАВЛЕННЫМ метаданным,   не используется  БСП,  лишний функционал должна быть отключен. В  подсистеме, по "добавленным" метаданным нужно выполнение только нашей бизнес логики. 

 

«Исправляем» БСП.

   Написано расширение, отключающее подписки БСП для списка заданных  типов. (Естественно, НЕ меняющее поведение системы для стандартных типов)

   Расширение анализирует обращение к подпискам. Если тип описан как исключение — подписка/обработчик НЕ выполняется.

   Список обрабатываемых/не обрабатываемых типов задается в модуле расширения.

 

   Отключаем не используемую функциональность (для тестовой подсистемы):

       —  миграция элементов между узлами РИБ

       —  автономные рабочие места

       —   метаданные НЕ стандартные и в процедурах обновления не участвуют

       — работа в модели сервиса

       — уведомления/задач пользователя

       — нет доп.реквизитов

       — нет интеграции с документооборотом

       — и т.д…. по функционалу БСП

 

Выводы:

    При отключении «лишних» подписок БСП имеем увеличение быстродействия базы 9-35% в зависимости от вида операции.(для  добавленных метаданных)

    Больше всего интересовал  процесс изменения/проведения документов. При изменении/проведении документа по 1 регистру накопления, при отключенных функциях БСП имеем ~ +9-15% производительности.

    Результаты весьма относительны и зависят от конкретных метаданных. Думал отключение БСП даст больший профит. Видимо есть еще зависимость от размера конфигурации / версии платформы. 

    В серверной среде все сложнее… но порядок цифр по тестам в рабочей базе примерно тот-же;

    В «рабочей» базе, можно поступить проще —  часть функций просто «отключить» расширением.

 

Пример отключаемых функций   (Полный список в расширении …  конечно, мы знаем/понимаем что и зачем это мы делаем 🙂 :

   АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанных

   АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанныхНаборЗаписей

   АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанныхДокумент

   ОбменДаннымиПолныйПередЗаписьюРегистра

   ОбменДаннымиСОтборамиПередЗаписьюРегистра

   ОбменДаннымиОбменУправлениеТорговлейРозницаПередЗаписьюРегистра

   ОбновлениеВерсииИБПередУдалениемСсылочногоОбъекта

   и т.д.

 

Оставшиеся вопросы к 1С 🙂  :

Предполагаю, что оптимизация — не сильная сторона разработчиков типовых конфигураций  1С 🙂 … но: 

  1. Почему отключение доп.функциональности для некоторых/ «своих» типов метаданных на стандартной конфигурации нельзя выполнить, не снимая конфигурацию с поддержки, не используя расширения?
  2. Почему 1С не отключают подписки на «удаленные» объекты, которые не используются ?
    Пример:
       РегистрСведенийНаборЗаписей.УдалитьГруппыЗначенийДоступа
       РегистрСведенийНаборЗаписей.УдалитьРезультатыОбменаДанными
       РегистрСведенийНаборЗаписей.УдалитьРезультатыОбменаДанными
       и т. д. Которые вызываются при ЛЮБОМ сохранении данных, в том числе "не стандартных"
  3. Почему при удалении документа (не стандартный "наш  документ"), который не  участвует в  "бизнес процессах" конфигурации, движении резервов, вызываются методы:
          ПередУдалениемРегистратораПроверитьНаличиеЗаписейВРезервахТоваровОрганизаций
          … и еще там что-то про контроль записи книг покупок/продаж … … задачи по пересчету книг   
  4. … много чего еще, если придираться. 🙂

 

Уточнения:

Тестовая машина:

FX8370/RAM 32 гб/ диски SSD CT1000MX500SSD1 система Win7 и базы на разных дисках

Поскольку RAM в несколько раз больше тестируемой базы, фактически сравниваем «вес вычислений» выполняемых алгоритмов.

 

Использовались:

Конфигурация: Управление торговлей 11.4.10.62

Платформа: 1С:Предприятие 8.3 (8.3.15.1489)

1 Comment

  1. borodatii

    Если колонка называется «% отклонения», то и считать нужно отклонение, либо назвать колонку «% от эталона».

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *