logo
Сборник 2012

Этапы оптимизации работы системы на базе 1с: предприятия клиент-серверной архитектуры

Нинилина К.В., ст-ка гр. БД-610

Научный рук.: д.т.н., профессор Зыкин С.В.

ФГБОУ ВПО «Омский государственный технический университет»

(Россия, г. Омск)

Технологическая платформа 1С:Предприятия предоставляет не только интерфейсные возможности ввода/вывода, но и реализует все механизмы необходимые для хранения, обработки и обновления информации, выполняя таким образом функции СУБД. Подобная многопрофильность не всегда способна удовлетворить потребности пользователей, в связи с чем все большее распространение получает клиент – серверный вариант работы, основанный на трехуровневой архитектуре «клиент-сервер».

Система 1С поддерживает два способа доступа к данным: объектный (для чтения и записи) и табличный (для чтения). Объектный способ подразумевает использование объектов конфигурации и обращение к совокупности их данных как к единому целому, т.е. открывая какой-либо справочник или документ в системе пользователь обращается к данным, которые собираются из нескольких физических таблиц базы, при этом могут быть получены только те данные, которые связаны с открываемым объектом. Табличный метод доступа является более гибким и традиционно представляет собой работу с таблицами базы данных посредством запросов на встроенном языке запросов 1С.

Встроенный язык запросов системы 1С: Предприятие на первый взгляд идентичен с привычным T-SQL, однако при более подробном рассмотрении имеет своеобразные особенности: возможность разыменования ссылочных полей; есть виртуальные таблицы для быстрого обращения к нужным данным из регистров (остатки, обороты и т.д.); есть возможность наложения блокировки на таблицы с помощью предложения «Для изменения»; нет возможности изменения данных, изменения структуры таблиц; нет функции коррелируемых запросов.

В большинстве случаев клиент-серверный вариант работы 1С удовлетворяет принципам эффективности и производительности, достаточно лишь настроить выполнение регламентных операций СУБД. Однако с числом количества пользователей, количества данных, усложнением информационных потоков в организации возникает необходимость изменять бизнес-логику, изменять конфигурацию системы 1С, что ведет к возникновению проблем производительности. Вся система 1С:Предприятия опирается на совокупность данных базы и оптимизация работы во многом опирается на оптимизацию запросов, однако прежде чем прибегнуть к оптимизации на уровне запросов необходимо пройти два предварительных уровня оптимизации. Такими уровнями являются: оптимизация на уровне конфигурации 1С и оптимизация на уровне СУБД.

Признаками необходимости оптимизации на уровне конфигурации являются: длительное время выполнения операций, сообщения об ошибках (timeout и deadlock), большое время отклика. Определить те «места» конфигурации, которые вызывают проблемы, поможет конфигуратор, а также журнал регистрации и режим замера производительности 1С. Разработчику или администратору следует уделить внимание оперативным данным, которые при работе с документами записываются в многочисленные регистры базы. Для начала следует убедиться, что измерения регистров спроектированы так, что позволяют обеспечить параллельность работы, учитывая при этом, что регистры накопления допускают параллельную запись наборов записей, отобранных по уникальному значению всех измерений. Далее необходимо проверить правильность индексирования измерений и реквизитов регистров, так как недостаточный индекс ведет к избыточной блокировке данных. Для ускорения отклика системы также рекомендуется избегать обращения к итогам регистров на указанную дату, то есть неактуальным, так как итоги будут пересчитываться, блокируя при этом таблицу движений регистра. Необходимо максимально ограничить использование транзакций, так как блокировки, установленные в транзакции, не позволят модифицировать прочитанные записи другими сессиями.

Оптимизация производительности на уровне СУБД можно разделить на стандартную и тонкую оптимизацию. К стандартной в первую очередь относятся регулярные регламентные работы: обновление статистики, очистка процедурного кэша, реиндексирование. Также во время стандартной оптимизации может быть проведена диагностика и оптимизация блокировок СУБД. Существует ряд общих рекомендаций, позволяющих снизить влияние блокировок на производительность системы. Первое на что стоит обратить внимание – это сокращение времени транзакции, путем декомпозиции большой транзакции на более мелкие. Также для снижения влияния взаимных блокировок (deadlock) стоит обеспечить единый порядок доступа к ресурсам. К тонкой оптимизации относится самый глубокий и многовариантный тип оптимизации информационных систем – это оптимизация запросов. Написание запросов в 1С имеет свои особенности, обусловленные бизнес-логикой приложения, в связи с которыми существуют типичные причины неоптимальной работы запросов: соединения с подзапросами; соединения с виртуальными таблицами; несоответствие индексов и условий запросов; использование подзапросов в условии соединения; получение данных через точку от полей составного типа; фильтрация виртуальных таблиц без использования параметров.

Описанные выше этапы повышения производительности работы системы 1С:Предприятие, предшествуют этапу оптимизации запросов, но стоит заметить, что создание «правильных» запросов составляет более пятидесяти процентов всей работы по повышению производительности системы 1С:Предприятие в клиент-серверном варианте работы.