от 95 000 ₽/год  
  • ОС: Windows, Linux
  • СУБД: MS SQL Server, PostgreSQL
  • Включён в Единый реестр российских программ для ЭВМ
  • Свидетельство Роспатента № 2015613604 от 19.03.2015 г.

QPosessing — это внешняя программа, представляет собой программный прокси-сервер , связывающий сервер приложений 1C:Предприятие и сервер баз данных. Выполняет потоковое сканирование трафика sql-запросов от сервера приложений и выборочно меняет характеристики или отдельных sql-запросов.

В любых базах данных MS SQL Server / PostgreSQL и особенно востребован в ситуациях, когда:

  • Невозможно изменить текста запроса через прикладной код приложения (закрытый участок кода, код программы утерян, имеются правовые ограничения для модификации кода и т.п.).
  • Долго и/или сложно искать узкие места в прикладном коде, где выполняется неоптимальный sql-запрос.
  • Отсутствуют средства автоматизации процесса поиска и анализа узких мест при динамичной разработке прикладного кода
  • Снизить затраты на оптимизацию кода приложения 1С.
  • Ускорить некоторые операции пользователей без рефакторинга прикладного кода.
  • Получить эффект сразу — достаточно активировать или деактивировать нужные правила модификации sql-запросов без перезагрузки серверов.
  • DATA CLUSTER был создан для высоконагруженных систем и спокойно обрабатывает поток 80 тыс. запросов в секунду.
  • Модификацию можно в любой момент отключить. В этом случае сервер QProcessing будет работать в прокси-режиме, пропуская через себя все запросы как есть.
  • Вы покупаете продукт только после того как совместно с нами успешно проведете испытание в продуктивной среде.

QProcessing – это компонент межсерверного взаимодействия клиентского приложения и базы данных. Представляет собой прокси-сервер, сканирующий весь трафик sql-запросов и выполняющий выборочную оптимизацию.

В основе работы QProcessing лежат настраиваемые правила, позволяющие из всего множества sql-запросов отбирать по сигнатуре целевые и осуществлять изменение текста (вставки команд баз данных, подсказки оптимизатора и др.).  Для создания правил применяются регулярные выражения.

При этом QProcessing не вносит каких-то весомых задержек в пропускаемый через себя трафик. Так, для запросов, не требующих модификации, а таких большинство, задержка не превысит 100 — 200 мкс. Для модифицируемых запросов задержка зависит напрямую от объема вносимых преобразований, и не превышает 5-10 мс. А для простейших модификаций, например, добавление подсказок соизмерима с задержкой запросов без модификации.

Активация и деактивация правил QProcessing не требует перезапуска серверов и выполняется без остановки работы пользователей в базе данных целевого назначения.

На рисунке представлена схема взаимодействия сервера QProcessing с серверами приложения (например, 1С) и MS SQL Server. На схеме показаны три запроса, поступающие от сервера приложения, из которых Запрос 1 пропускается сервером QProcessing без изменений, а в Запросы 2 и 3 QProcessing добавил подсказки для оптимизатора плана запросов.

Примеры правил в QProcessing на основе регулярных выражений для оптимизации sql-запросов.

1. Включение в запрос подсказок (хинтов) для оптимизатора.
В период повышенной интенсивности работы пользователей в базе данных, некоторые sql-запросы могут существенно замедляться – оптимизатор может ошибаться в выборе плана выполнения, например, использовать соединение nested loops вместо hash join. При этом статистика может быть актуальной. При помощи QProcessing можно добавить правило с подсказкой использования «на лету» hash join, что исправит ситуацию и выбранные sql-запросы будут выполняться стабильно удовлетворительно


2. Замена текста запроса на более эффективный.
В качестве примера можно привести sql-запрос с условиями «или» в фильтре. Это приводит к безусловному использованию сканирования индекса при поиске нужных строк. Запрос при помощи QProcessing можно изменить следующим образом: составить два sql-запроса и объединить выборки. Это позволит использовать поиск в индексе и ускорить запрос.

3. Ускорение запросов, связанных с работой механизма RLS
Основная причина медленного выполнения запросов с RLS — это неоптимальный план, который выбирает оптимизатор. А не оптимальный он потому, что MS SQL Server не успевает за отведенное ему время перебрать огромное множество комбинаций. Используя QProcessing можно перехватить определенные группы запросов от сервера 1С и модифицировать их на лету путем добавления правильных подсказок.

4. Использование собственного полнотекстового индекса вместо поиска по LIKE %%
Зачастую пользователи работают с поиском по подстрокам, например, при поиске неполного наименования товаров, контрагентов, номера договора и прочей информации. Скорость работы такого поиска напрямую зависит от объёма справочника или других таблиц. Причем, по нашему опыту, полнотекстовый поиск, использующий компонент «FULLTEXT SEARCH» из состава с SQL Server не всегда работает стабильно. Например, часто зависает или возвращает разные результаты при повторных поисках в одной и той же форме с одним и тем же неизменным текстом для поиска. Используя QProcessing, есть возможность перейти на свой полнотекстовый индекс, и при появлении соответствующего запроса программа выполнит модификацию поисковых запросов «на лету», чтобы они обращались именно к нужному полнотекстовому индексу.

4. Выделение требуемого объёма ресурсов CPU для определённых групп запросов (аналитика)
Зачастую степень параллелизма (параметр max degree of parallelism) при работе с СУБД уменьшают до «1», чтобы уменьшить вероятность возникновения избыточных блокировок. Для аналитических отчётов в QProcessing возможно использовать подсказку на распараллеливание sql-запросов – опционально задавать уровень параллелизма, отличный от «1» для определённой группы запросов. Таким образом решается сразу 2 задачи: нет блокировок на параллелизме в оперативной работе, и есть ускорение аналитических отчётов. 

Информация

Внедрение QProcessing очень простое и может даже не потребовать аппаратных изменений. Обычно мы рекомендуем разворачивать программу на отдельном сервере (виртуальной машине). Но как вариант, ее можно развернуть и на сервере приложений, если его мощности и профиль нагрузки позволяют это сделать. QProcessing работает как сервис, через который проходит весь трафик sql-запросов к серверу баз данных.

 

Кроме этого QProcessing может быть подключен как модуль программы для ЭВМ SoftPoint Data Cluster.

План внедрения в общем виде:

  1.  Развернуть сервис QProcessing, прописать в его настройках подключение к базе данных на сервере MS SQL.
  2.  Изменить в настройках сервера приложений путь к серверу СУБД и базе данных - поменять его на сервер QProcessing.
  3.  В настройках сервера приложения изменить подключение к базе данных сервера СУБД - поменять его на сервер QProcessing.
  4. Убедиться, что трафик между серверами приложений и сервером MSSQL проходит без задержек и приступить к настройке правил модификации запросов.

Пример подключения QProcessing и настройки правила модификации запроса

Цены

QPROCESSING поставляется в двух редакциях — Standard и Enterprise.
Схема лицензирования учитывает количество подключаемых к балансировщику баз данных на сервере.

Standard

Базовая лицензия, позволяет подключить к DATA CLUSTER только одну базу данных на сервере СУБД

95 000 ₽/год

Enterprise

Основная лицензия, позволяет подключить к QPROCESSING весь сервер СУБД с неограниченным количеством баз на нем

300 000 ₽/год

 

Портфолио

Ознакомиться более детально с практическими примерами применения QProcessing можно в наших статьях.

 

Пользователи QProcessing:

Как связаться

Меню

Что будем искать? Например,репликация