Особенности оптимизации неэффективных запросов в 1С 8.1 и 1С 8.2 (набор примеров оптимизации запросов 1С 8.1/8.2, решения для 1С 8.1/8.2)   

Для системы 1С:УПП 8.1 и других подобных "тяжелых" конфигураций очень актуальна задача оптимизации неэффективных запросов.

В результате на практике оптимизация запросов на MS SQL 1C 8.1 и 1С 8.2 - это тяжелая, кропотливая работа, требующая высокой квалификации. Ключевые особенности и проблемы в оптимизации заключаются в следующем:

  1. Запросы разбросаны по различным модулям конфигурации, и таких запросов достаточно много.

  2. Конструкции запросов длинные и запутанные. В большинстве случаев (по статистике тяжелых запросов) текст запросов формируется динамически, конструкторами запросов.

  3. В 1C используются SQL имена объектов не связанные с именами объектов в конфигураторе. В силу этой причины визуально сложен анализ планов запросов.

  4. Типовые средства анализа MS SQL не применимы или не эффективны в силу специфики вызываемых 1С, SQL конструкций (например, менеджера временных таблиц).

  5. В типовом средстве анализа 1С (Корпоративный инструментальный пакет) не реализован функционал анализа планов выполнения запросов.

  6. В корпоративном инструментальном пакете 1С есть возможность сбора статистики по выполнению запросов только в разрезе времени и количества вызовов (нет связки с CPU, reads и т. п.).

  7. В типовых средствах анализа MS SQL нет возможности сгруппировать запросы в разрезе модулей и номеров строк 1С.

К примеру, в 1С:УПП огромное количество модулей и запросов, нуждающихся в оптимизации в зависимости от используемого функционала. Некоторые запросы состоят из 100-и и более соединяемых таблиц. Большинство из них таковы что если тексты запросов распечатать на листах А4 они не помещаются на письменном столе. Анализировать подобные запросы или планы их выполнения учитывая "непонятные" названия таблиц в MSSQL - непростая задача.

Ссылаясь на статью "Применение Database Engine Tuning Advisor в оптимизации производительности запросов 1С 8.1, 1С 8.2" - использование Database Engine Tuning Advisor не позволяет рассчитывать эффективность применения индексов для более, чем 60% запросов 1С. Это связанно с использованием временных таблиц в запросах 1С, а точнее с специфичной конструкцией их первоначального создания (select into). Database Engine Tuning Advisor не учитывает подобные конструкции при анализе.

В корпоративном инструментальном пакете 1С анализируется статистика по времени выполнения запросов. Но сбор подобной статистики нагружает рабочую систему, что не позволяет собирать ее постоянно. Также статистика собирается только в разрезе количества вызова запросов и времени их выполнения. На практике для повышения масштабируемости системы важнее характеристики логических чтений reads или задействованного на выполнение процессорного времени CPU. Также, ЦУП не собирает данные по планам выполнения запросов.

Компания СофтПоинт предлагает новый продукт "Оптимизатор запросов в MS SQL 2005", который позволяет максимально упростить процесс оптимизации запросов для MSSQL 2005 1С 8.1 и 1С 8.2.

Детальное описание и преимущества программного продукта "Оптимизатор запросов в MS SQL 2005".


Также по теме:

Читайте статью "Применение Database Engine Tuning Advisor в оптимизации производительности запросов 1С 8.1, 1С 8.2"

Смотрите конкретные Решения для информационных систем на базе 1С:Предприятие 8.1 и 8.2