Переход с 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С + компонента SPClear1C;
- Оптимизация проведения с помощью компоненты ToySQL;
- При использовании компоненты SPClear1C буфер очищался после каждого проведения. Такой режим я выбрал не случайно, так как документ "Выпуск продукции по нормам" серьезно нагружает систему, и замедление начинает чувствоваться даже после одного проведения.
Результаты тестирования:
На графике хорошо видно, что при проведении средствами 1С (график 1С) время проведения документа стремительно увеличивается: для первого проведения оно составляет 2,5 с, для последнего - 15,5 с.
Применение SPClear1C позволяет сдерживать замедление при массовом проведении документов (график 1C+SPClear1C). Увеличение времени проведения есть, но оно не такое сильное. При этом от программиста не требуется больших доработок конфигурации, как, например, в случае с ToySQL.
Оптимизация проведения с помощью ToySQL показывает лучшие результаты (1C+ToySQL). Однако, это самый сложный способ улучшения программы 1С.
Приведенная ниже таблица показывает общие затраты времени на 1000 проведений:
Способ проведения | Время, затраченное на 1000 проведений |
1С | 9058 c ( 2 ч 30 м 58 с) |
1С c компонентой SPClear1C | 4241 с (1 ч 10 м 41 с) |
1C с компонентой ToySQL | 1222 c (20 м 22 с) |
Компонента SPClear1C может работать только в монопольном режиме. Это означает, что воспользоваться ее преимуществом при работе в многопользовательской среде не удастся, а вот при восстановлении последовательности или выполнении каких-либо других регламентных работ эта компонента будет очень кстати.
На этом, пожалуй, все.
Начать дискуссию