
Таблицы запросов и производительность запросов
Таблицы запросов вводят ясную программную модель для разработки клиентских приложений, которые извлекают списки неавтоматизированных задач и процессов BPEL в Business Process Choreographer. Использование таблиц запросов повышает производительность. Ниже приводится информация о параметрах API таблицы запросов и других факторах, влияющих на производительность.
- Опции авторизации значительно влияют на производительность. Старайтесь, чтобы авторизация использовала как можно меньше опций, таких как задания для группа и отдельных сотрудников. Избегайте использования унаследованных заданий. Опции авторизации можно еще больше ограничить при выполнении запроса. Кроме того, если она не обязательна, укажите, что использующая задания авторизация не требуется.
- Если авторизация, использующая задания, необходима, укажите фильтр авторизации. Например, чтобы разрешить в таблице запросов только объекты с потенциальным заданием владельца, используйте параметр WI.REASON=REASON_POTENTIAL_OWNER.
- Фильтрация первичной таблицы запросов является эффективной. Например, для того чтобы разрешить только задачи в готовом состоянии в таблице запросов, где TASK является первичной таблицей запросов.
- Фильтры в таблице запросов и фильтры запроса, которые передаются при выполнении запроса, менее эффективны в качестве первичных фильтров в терминах производительности.
- Там, где это возможно, избегайте использования параметров в фильтрах и критериях выбора.
- Избегайте использования операторов LIKE в фильтрах и критериях выбора.
Определение составной таблицы запросов
Следующая таблица предоставляет информацию о влиянии на производительность запроса опций, определенных в составных таблицах запросов. Также приведена другая информация, связанная с определениями составных таблиц запросов. Влияние, указанное в столбце Влияние на производительность, является средним значением, а фактически наблюдаемое влияние может отличаться.
| Объект или тема | Влияние на производительность | Описание |
|---|---|---|
| Фильтр таблицы запросов | Негативное | Фильтры в таблицах запросов являются фильтрами с самым высоким негативным влиянием на производительность запроса. Эти фильтры обычно не могут использовать индексы, определенные в базе данных. |
| Фильтр первичной таблицы запросов | Позитивное | Фильтр в первичной таблице запросов обеспечивает высокопроизводительную фильтрацию на ранней стадии вычисления набора результатов запроса. Он рекомендуется для ограничения содержимого таблицы запросов с помощью фильтра первичной таблицы запросов. |
| Фильтр авторизации | Позитивное | Фильтр авторизации может повысить производительность запроса, так же как ее повышает фильтр первичной таблицы запросов. Если возможно, применяйте фильтр авторизации. Например, задания читателя не должны учитываться, укажите параметр WI.REASON=REASON_READER. |
| Критерии выбора | Нет | Некоторые отношения первичной таблицы запросов к прикрепленной таблице запросов требуют определения критериев выбора для взаимосвязи один-к-одному или один-к-нулю. Критерии выбора обычно имеют низкое влияние на производительность, потому что они вычисляются только для малого числа строк. |
| Параметры | Нет | В настоящее время использование параметров в таблицах запросов не оказывает негативного влияния на производительность. Тем не менее, используйте параметры, только если они необходимы. |
| Авторизация на основе экземпляров | Негативное | Если используется авторизация на основе экземпляров, каждый объект в таблице запросов должен быть проверен на существование задания. Задания представлены как записи в таблице запросов WORK_ITEM. Эта проверка влияет на производительность. |
Авторизация на основе экземпляров:
|
Негативное | Каждый тип задания, указанный для использования в таблице запросов, оказывает влияние на производительность. Приложения с объемными запросами должны использовать элементы сотрудников и/или групп. Унаследованные задания обычно не требуются, в особенности при определении списков задач, которые возвращают неавтоматизированные задачи, представляющие задачи-задания. Они должны использоваться, только когда ясно, что они необходимы, например, для возврата списков задач, принадлежащих к процессу BPEL, в котором сотрудник имеет право доступа для чтения на основании авторизации для включающего процесса BPEL. |
| Авторизация на основе ролей или отсутствие авторизации | Нет | Если используется авторизация на основе ролей или авторизация не используется, проверки заданий не выполняются. |
| Количество определенных атрибутов | В настоящее время нет | В настоящее время количество содержащихся в таблице запросов атрибутов не оказывает влияния на производительность. Тем не менее, включайте только те атрибуты, которые необходимы в составе таблицы запросов. |
API таблицы запросов
Следующая таблица предоставляет информацию о влиянии на производительность запроса опций, указанных в API таблицы запросов. Влияние, указанное в столбце Влияние на производительность, является средним значением, а фактически наблюдаемое влияние может отличаться.
| Вариант | Влияние на производительность | Описание |
|---|---|---|
| Выбранные атрибуты | Негативное (меньше лучше) | Количество атрибутов, выбранных при выполнении запроса над таблицей запросов, влияет на количество атрибутов, которые должны быть обработаны базой данных и Business Process Choreographer. Кроме того, для составных таблиц запросов информация их прикрепленных таблиц запросов должна извлекаться, только если они заданы выбранными атрибутами или указаны в фильтре таблицы запросов или в фильтре запроса. |
| Фильтр запроса | Негативное | Если указан, фильтр запроса в настоящее время оказывает такое же влияние на таблицу запросов, как и фильтр запроса. Однако, рекомендуется указывать фильтры в таблицах запросов, а не передавать их в API таблиц запросов. |
| Атрибуты сортировки | Негативное | Сортировка наборов результатов запросов является экстенсивной операцией, и оптимизация базы данных ограничена при использовании сортировки. Если это не обязательно, следует избегать сортировки. Однако, большинство приложений требуют сортировки. |
| Пороговое значение | Позитивное | Спецификация порога может сильно повысить производительность запросов. Рекомендуется всегда указывать пороговое значение. |
| Количество пропускаемых результатов | Негативное | Пропуск определенного числа объектов в наборе результатов запроса является экстенсивной операцией, которую следует выполнять только в случае необходимости, например, при разбиении результатов запроса по страницам. |
| Часовой пояс | Нет | Параметр часового пояса не влияет на производительность. |
| Локаль | Нет | Параметр локали не влияет на производительность. |
| Различные строки | Негативное | Использование различения в запросах имеет некоторое влияние на производительность, но может быть необходимым для извлечения неповторяющихся строк. Эта опция влияет только на запросы, основанные на строках, и игнорируется в других. |
| Запросы количества | Позитивное | Если необходимо только общее число объектов или число строк, то есть содержимое не требуется для всех записей таблицы запросов, используйте метод queryEntityCount или queryRowCount. Business Process Choreographer может применить оптимизации, допустимые только для запросов количества. |
Другие замечания
| Элемент | Описание |
|---|---|
| Количество таблиц запросов в системе | Количество таблиц запросов, развернутых в контейнере Business Process Choreographer, не влияет на производительность запросов таблиц запросов. Кроме того, оно не влияет на навигацию по экземплярам процессов BPEL и на операции затребования и выполнения неавтоматизированных задач. В целях удобства обслуживания поддерживайте количество таблиц запросов на разумном уровне. Обычно, одна таблица запросов представляет один список задач или список процессов, показанный в пользовательском интерфейсе. |
| Настройка базы данных | Хотя для доступа к содержимому таблицы запросов используется оптимизированный SQL,
необходимо настроить базу данных в Business Process Choreographer:
|
| Сортировка и фильтрация | Для того чтобы повысить производительность сортировки и фильтрации, можно использовать встроенные пользовательские параметры CUSTOM_TEXT1 - CUSTOM_TEXT8. Эти атрибуты таблицы запросов доступны для экземпляров процессов и задач и шаблонов процессов и задач. Так как встроенные пользовательские параметры хранятся в той же таблице запросов, что и объект, с которым они связаны, фильтрация и сортировка более эффективны. Можно заменить некоторые или все из невстроенных пользовательских параметров для процессов и задач с помощью встроенных пользовательских параметров. |