Оптимизация механизмов выгрузки номенклатуры в «Магазине 15»
Введение
При работе во всем важна скорость действий, скорость считывания, скорость работы сотрудника, от этого зависит время, которое требуется потратить для решения конкретной задачи.
Поэтому мы оптимизировали механизмы одной из важнейших задач при работе с ТСД — выгрузку справочника номенклатуры.
В магазинах как правило справочники бывают до 10 тысяч позиций номенклатуры. Бывают и исключения, когда справочники имеют больше 200 тысяч позиций. При больших объемах справочника важна скорость обработки, для скорейшего начала работы с ним на ТСД.
Используемое оборудование и ПО
Тестирование обработки производилось на рабочем ноутбуке с развернутым SQL — сервером и 32х разрядным сервером и клиентом 1С.
Ноутбук: ОЗУ 16gb, ОС Windows 7 Максимальная х64
SSD диск: ADATA SP600 (Fw: 2.9), 256 Гб
1С:Предприятие 8.3.8.2197. Конфигурация «Управление торговлей», редакция 11.2.3.125
MS SQL Server: 11.0.6020.0
Выделено памяти под MS SQL Server: 6144 Мб
Версии Mobile SMARTS:
- Версия приложения: 1.0.1.11
- Версия MSI платформы: 3.0.0.45166
- Версия инфраструктуры: 1.0.0.11030
- Версия СОМ: 3.0.0.9387
- Версия 1С СОМ: 3.0.0.3459
- Версия сервера Mobile SMARTS: 3.0.0.3376
- Версия сервера данных: 3.0.0.3583
Результаты замеров
Выгрузка номенклатуры была запущена после перезапуска SQL-сервера, т. е. на «холодных» данных, когда SQL-сервер ещё не загрузил в память данные, необходимые для выполнения запроса:
После проведенной оптимизации кода в обработке, мы сделали замеры выгрузки номенклатуры в двух режимах:
- Режим №1, когда компонента Mobile SMARTS установлена на ПК удаленно подключенному к серверу 1С;
- Режим №2, когда компонента Mobile SMARTS установлена на сервере 1С.
Режим №1 (Компонента Mobile SMARTS установлена удалено от сервера 1С)
Часть 1. Выполнение запроса и формирование массива для выгрузки:
Самые долгие операции: выполнение запроса заняло почти 33 сек., выгрузка в таблицу значений — 36 сек, формирование массива выгрузки из таблицы значений на клиенте — 867 сек (за счет того, что для каждой номенклатуры приходилось получать GUID через обращение на сервер). Всего — 950 сек.
Потребление памяти серверами 1С и SQL примерно такое же, но здесь большое потребление памяти тонким клиентом 1С, т.к. с сервера на клиент передалась таблица с номенклатурой:
Часть 2. Выгрузка данных в Mobile SMARTS через COM-коннектор:
Нагрузка на процессор во время выгрузки, оно и логично, что всю работу выполняет тонкий клиент 1С, т.к. выгрузка происходит на клиенте:
В самом конце выгрузки нагрузка перешла на Mobile SMARTS сервер — он завершал выгрузку товаров
Замер времени выгрузки в Mobile SMARTS:
Это почти совпадает с таким же временем при выгрузке на сервере: «ДобавитьВВыгрузкуТоваров» — 142 сек, «ЗавершитьВыгрузкуТоваров» — 67 сек. Всего — около 270 сек.
Всё заняло времени: часть 1 (950 сек.) + часть 2 (270 сек.) = 1220 сек — около 21 минуты.
Причина задержки ясна: формирование массива выгрузки из таблицы значений на клиенте — 867 сек (за счет того, что для каждой номенклатуры приходилось получать GUID через обращение на сервер, т.к. в самом запросе его невозможно получить, только через конструкцию вида «XMLСтрока (СсылкаНоменклатуры)»).
Режим №2 (Компонента Mobile SMARTS на сервере 1С)
Часть 1. Выполнение запроса и формирование массива для выгрузки:
Самые долгие операции: выполнение запроса заняло почти 32 сек., выгрузка в таблицу значений — 32 сек, всего формирование массива выгрузки — около 74 сек.
Потребление памяти серверами 1С и SQL выросло:
- 1C до 2060344 Кб
- SQL-сервера до 1114604 Кб
Часть 2. Выгрузка данных в Mobile SMARTS через COM-коннектор:
Нагрузка на процессор во время выгрузки:
- 1C — 26%
- Mobile SMARTS сервера — 5%
Замер времени выгрузки в Mobile SMARTS:
Метод «ДобавитьВВыгрузкуТоваров» выполнялся 149 сек, метод «ЗавершитьВыгрузкуТоваров» — 66 сек, всего — около 293 сек.
Итого: выгружено 231893 элементов справочника номенклатуры.
Заняло времени: часть 1 (74 сек) + часть 2 (293 сек) = 367 сек — около 6 минут
Размер файла с номенклатурой — 57 Мб, общий объем вместе с индексными файлами для поиска — около 120 Мб.
Выводы
В результате оптимизации механизмов выгрузки нам удалось существенно сократить время выгрузки номенклатурного справочника из 1С в управляемых формах. По сравнению с версией 1.0.1.16 время выгрузки сократилось в несколько раз. До оптимизации выгрузка на сервере аналогичного по объему справочника могла занимать до пяти часов.
Как мы видим из результатов замеров, даже после существенной оптимизации, самым быстрым режимом выгрузки будет являться — Режим №2, когда наша компонента Mobile SMARTS установлена на сервере 1С. Время выгрузки составило всего 6 минут. В Режиме №1, если подключение будет осуществляться с установленной компонентой не на сервере 1С — 21 минута. Разница по времени выгрузки достаточно существенная, примерно трехкратная.
Обновление до оптимизированной версии 1.0.1.21 и выше позволяет потратить сэкономленное время на решение конкретных задач оператором с ТСД, будь то проведение инвентаризации, простой сбор заказа, или любая другая операция.
Количество показов: 2668