Замедление при массовом проведении документов. Тестирование компоненты SPClear1C

Переход с DBF на SQL-версию программы может преподнести много неприятных сюрпризов. Один из них - снижение скорости работы программы при массовом проведении документов. Эта проблема хорошо описана в статье на сайте www.softpoint.ru. Вкратце ее суть сводится к тому, что при проведении большого числа документов скорость их проведения снижается. Причина кроется в MS SQL Server 2000. Для MS SQL Server 7.0 такой проблемы не существует.

Переход с DBF на SQL-версию программы может преподнести много неприятных сюрпризов. Один из них - снижение скорости работы программы при массовом проведении документов. Эта проблема хорошо описана в статье на сайте www.softpoint.ru. Вкратце ее суть сводится к тому, что при проведении большого числа документов скорость их проведения снижается. Причина кроется в MS SQL Server 2000. Для MS SQL Server 7.0 такой проблемы не существует.

В конце марта 2007 г. мне довелось потестировать компоненту SPClear1C от компании SoftPoint. Компонента предназначена для устранения замедления при массовом проведении документов и длительной работе пользователя в одной сессии 1С.

Условия тестирования:

  • Конфигурация - ПУБ, размер базы - 6,5 Гб;
  • MS SQL Server 2000 SP3;
  • 1С 7.7 релиз 25;
  • MS SQL Server 2000 и 1С 7.7 запускались на одном компьютере;
  • Один и тот же документ "Выпуск продукции по нормам", находящийся на ТА, проводился в цикле 1000 раз;
  • Время проведения измерялось с помощью функции _GetPerformanceCounter():
    Процедура ОбработкаПроведения() НачВремя = _GetPerformanceCounter(); … КонВремя = _GetPerformanceCounter(); Длительность = КонВремя-НачВремя; Длительность = Формат(Длительность/1000,"Ч10.3, "); Сообщить("Время проведения документа: "+Длительность+" с"); КонецПроцедуры
  • Документ проводился в 3х различных режимах:
    1. Проведение средствами 1С;
    2. Проведение средствами 1С + компонента SPClear1C;
    3. Оптимизация проведения с помощью компоненты ToySQL;
  • При использовании компоненты SPClear1C буфер очищался после каждого проведения. Такой режим я выбрал не случайно, так как документ "Выпуск продукции по нормам" серьезно нагружает систему, и замедление начинает чувствоваться даже после одного проведения.

Результаты тестирования:

Зависимость времени проведения документа от номера проведения

На графике хорошо видно, что при проведении средствами 1С (график 1С) время проведения документа стремительно увеличивается: для первого проведения оно составляет 2,5 с, для последнего - 15,5 с.

Применение SPClear1C позволяет сдерживать замедление при массовом проведении документов (график 1C+SPClear1C). Увеличение времени проведения есть, но оно не такое сильное. При этом от программиста не требуется больших доработок конфигурации, как, например, в случае с ToySQL.

Оптимизация проведения с помощью ToySQL показывает лучшие результаты (1C+ToySQL). Однако, это самый сложный способ улучшения программы 1С.

Приведенная ниже таблица показывает общие затраты времени на 1000 проведений:

Способ проведения Время, затраченное на 1000 проведений
9058 c ( 2 ч 30 м 58 с)
1С c компонентой SPClear1C 4241 с (1 ч 10 м 41 с)
1C с компонентой ToySQL 1222 c (20 м 22 с)

 

Компонента SPClear1C может работать только в монопольном режиме. Это означает, что воспользоваться ее преимуществом при работе в многопользовательской среде не удастся, а вот при восстановлении последовательности или выполнении каких-либо других регламентных работ эта компонента будет очень кстати.

На этом, пожалуй, все.

Начать дискуссию