
QPROCESSING
- Снижайте затраты на оптимизацию работы приложения - не ломайте голову над тем, как добраться до "проблемного" sql-запроса, просто укажите на него программе QProcessing.
- Ускоряйте операции пользователей без рефакторинга прикладного кода - модифицируйте любые sql-запросы, в том числе из закрытых участков кода или запросов платформы приложения.
- Получайте эффект сразу - активируйте и деактивируйте настраиваемые правила модификации sql-запросов без перезагрузки серверов.
- ИНФОРМАЦИЯ
- ОПИСАНИЕ
- ВНЕДРЕНИЕ
- ПОРТФОЛИО
- ДОКУМЕНТЫ
QProcessing - это
промежуточное программное обеспечение (Middleware Software), связывающее клиентское приложение и базу данных, выполняющее потоковое сканирование трафика sql-запросов и их выборочную модификацию.
QProcessing применяется
в любых базах данных на платформе MS SQL Server и особенно востребован в ситуациях, когда:
- невозможно изменить текста запроса через прикладной код (закрытый участок кода, код программы утерян, имеются правовые ограничения для модификации кода и т.п.);
- долго и/или сложно искать узкие места в прикладном коде, где выполняется неоптимальный sql-запрос;
- отсутствуют средства автоматизации процесса поиска и анализа узких мест при динамичной разработке прикладного кода.
Модель лицензирования QProcessing
Лицензия на базу данных, включает:
- программный ключ QProcessing для работы c одной базой данных;
- дополнительный программный ключ QProcessing для одной базы данных, используемой для разработки/тестирования.
Лицензия на сервер баз данных, включает:
- программный ключ QProcessing для работы cо всеми расположенными на сервере базами данных;
- дополнительный программный ключ QProcessing для одной базы данных, используемой для разработки/тестирования.
Формат поставки QProcessing
Электронная поставка по предоплате 100%.
Стоимость лицензий QProcessing
Лицензия на базу данных: от 95 000 ₽/год
Лицензия на сервер баз данных: от 300 000 ₽/год
Регистрационные сведения
Свидетельство о государственной регистрации Программы для ЭВМ "SoftPoint QProcessing" от 19.03.2015 № 2015613604, выдано Федеральной службой по интеллектуальной собственности, патентам и товарным знакам.
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. Использование собственного полнотекстового индекса вместо поиска по 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 и настройки правила модификации запроса
|
|
|
|
||
|
|
|
|
||
|
||
|
||
|
||