Классификатор CREATE WORKLOAD (Transact-SQL)
Область применения: Azure Synapse Analytics
Создает объект классификатора для использования при управлении рабочей нагрузкой. Классификатор назначает входящие запросы в группу рабочей нагрузки в зависимости от параметров, указанных в инструкции определения классификатора. Классификаторы вычисляются при каждом запросе. Если запрос не соответствует классификатору, он назначается группе рабочей нагрузки по умолчанию. Группа рабочей нагрузки по умолчанию — smallrc
это класс ресурсов.
Примечание.
Классификация поведения управляемых экземпляров (MI) отличается в выделенном пуле SQL в рабочих областях Azure Synapse и в изолированном выделенном пуле SQL (ранее называвшемся Хранилище данных SQL). В изолированном выделенном пуле SQL управляемый экземпляр сохраняет назначенное удостоверение, а в рабочих областях Azure Synapse он добавляется в роль dbo. Это невозможно изменить. Роль dbo по умолчанию классифицируется по smallrc
умолчанию. Создание классификатора для роли dbo позволяет назначать запросы группе рабочей нагрузки, отличной от smallrc
. Если dbo только является слишком универсальным для классификации и имеет более широкие последствия, рассмотрите возможность использования меток, сеансов или классификации на основе времени в сочетании с классификацией ролей dbo .
Соглашения о синтаксисе Transact-SQL
Синтаксис
CREATE WORKLOAD CLASSIFIER classifier_name
WITH
( WORKLOAD_GROUP = 'name'
, MEMBERNAME = 'security_account'
[ [ , ] WLM_LABEL = 'label' ]
[ [ , ] WLM_CONTEXT = 'context' ]
[ [ , ] START_TIME = 'HH:MM' ]
[ [ , ] END_TIME = 'HH:MM' ]
[ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH } ] )
[ ; ]
Примечание.
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Аргументы
classifier_name
Указывает имя, по которому идентифицируется классификатор рабочей нагрузки. classifier_name — sysname. Этот параметр может содержать до 128 символов и должен быть уникальным в экземпляре.
WORKLOAD_GROUP = "name"
При выполнении условий правилами классификатора имя name сопоставляет запрос с группой рабочей нагрузки. имя — sysname. Этот параметр может содержать до 128 символов и должен быть допустимым именем группы рабочей нагрузки во время создания классификатора.
Доступные группы рабочей нагрузки можно найти в представлении каталога sys.workload_management_workload_groups.
MEMBERNAME = "security_account"
Учетная запись безопасности, используемая для классификации. security_account — sysname без значения по умолчанию. security_account может быть пользователем базы данных, ролью базы данных, именем входа Microsoft Entra или группой Microsoft Entra.
Примечание.
user_name()
Используйте функцию при подключении к системе, чтобы убедитьсяMEMBERNAME
, что процесс классификации будет использоваться для классификации запроса. MEMBERNAME
Проверка функции может быть полезной для устранения неполадок с user_name()
идентификатором Microsoft Entra ID или классификацией субъекта-службы. Если user_name()
возвращается dbo
, можно использовать dbo в качестве MEMBERNAME
классификации запросов. Все члены роли dbo будут классифицированы. Дополнительные параметры классификации, такие как WLM_LABEL
или WLM_CONTEXT
можно также использовать для классификации запросов из нескольких учетных записей Microsoft Entra, сопоставленных с ролью dbo .
WLM_LABEL
Указывает значение метки, относительно которого может классифицироваться запрос. Метка является необязательным параметром типа nvarchar(255). Используйте OPTION (LABEL) в запросе для сопоставления конфигурации классификатора.
Например:
CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
WORKLOAD_GROUP = 'wgDataLoad',
MEMBERNAME = 'ELTRole',
WLM_LABEL = 'dimension_loads'
);
SELECT COUNT(*) FROM DimCustomer
OPTION (LABEL = 'dimension_loads');
WLM_CONTEXT
Указывает значение контекста сеанса, относительно которого может классифицироваться запрос. WLM_CONTEXT
— необязательный параметр типа nvarchar(255). Используйте sys.sp_set_session_context с именем переменной, равным wlm_context
перед отправкой запроса, чтобы задать контекст сеанса.
Например:
CREATE WORKLOAD CLASSIFIER wcDataLoad
WITH (
WORKLOAD_GROUP = 'wgDataLoad',
MEMBERNAME = 'ELTRole',
WLM_CONTEXT = 'dim_load'
);
--set session context
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = 'dim_load';
--run multiple statements using the wlm_context setting
SELECT COUNT(*) FROM stg.daily_customer_load;
SELECT COUNT(*) FROM stg.daily_sales_load;
--turn off the wlm_context session setting
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = NULL;
START_TIME и END_TIME
Указывает время начала и время окончания, по которому можно классифицировать запрос. END_TIME
Оба START_TIME
и имеют формат в часовом поясе HH:mm
UTC. START_TIME
и END_TIME
должны быть указаны вместе.
Например:
CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
WORKLOAD_GROUP = 'wgDataLoads',
MEMBERNAME = 'ELTRole',
START_TIME = '22:00',
END_TIME = '02:00'
);
IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }
Указывает относительную важность запроса. ЗначениеIMPORTANCE
является одним из следующих вариантов:
LOW
BELOW_NORMAL
NORMAL
(по умолчанию)ABOVE_NORMAL
HIGH
Если IMPORTANCE
значение не указано, используется параметр важности группы рабочей нагрузки. Важность группы NORMAL
рабочей нагрузки по умолчанию. Важность влияет на порядок, в котором будут запланированы запросы, тем самым обеспечивая приоритетный доступ к ресурсам и блокировке.
Замечания
Максимальное число определяемых пользователем классификаторов — 100
. Дополнительные конфигурации, превышающие это ограничение, не поддерживаются. Рекомендуется группировать классификаторы в общей категории для эффективного применения одного параметра в нескольких рабочих нагрузках или пользователях.
Взвешивание параметров классификации
Запрос может соответствовать нескольким классификаторам. Существует вес для параметров классификатора. Для назначения группы рабочей нагрузки и важности используется соответствующий классификатор с более высоким весом. Весовой коэффициент выглядит следующим образом.
Параметр классификатора | Вес |
---|---|
USER |
64 |
ROLE |
32 |
WLM_LABEL |
16 |
WLM_CONTEXT |
8 |
START_TIME /END_TIME |
4 |
Рассмотрим следующие конфигурации классификатора.
CREATE WORKLOAD CLASSIFIER classifierA
WITH (
WORKLOAD_GROUP = 'wgDashboards',
MEMBERNAME = 'userloginA',
IMPORTANCE = HIGH,
WLM_LABEL = 'salereport'
);
CREATE WORKLOAD CLASSIFIER classifierB
WITH (
WORKLOAD_GROUP = 'wgUserQueries',
MEMBERNAME = 'userloginA',
IMPORTANCE = LOW,
START_TIME = '18:00',
END_TIME = '07:00'
);
Пользователь userloginA
настроен для обоих классификаторов. Если userloginA
выполняется запрос с меткой, равной salesreport
6PM и 7AM UTC, запрос классифицируется в wgDashboards
группу рабочей нагрузки с HIGH
важностью. Ожидание может быть классифицировать запрос wgUserQueries
с важностью для отчетов вне часов, но весовые WLM_LABEL
значения вышеSTART_TIME
/END_TIME
.LOW
Вес classifierA
весит (80
64
для пользователя, а также 16
для WLM_LABEL
). Вес classifierB
весит (68
64
для пользователя). 4
START_TIME
/END_TIME
В этом случае можно добавить WLM_LABEL
classifierB
в .
Дополнительные сведения см. в статье о весе рабочей нагрузки.
Разрешения
Требуется разрешение CONTROL DATABASE
.
Примеры
В следующем примере демонстрируется, как создать классификатор рабочей нагрузки с именем wgcELTRole
. Он использует staticrc20
группу рабочей нагрузки, пользователя ELTRole
и задает значение ABOVE_NORMAL
"ВАЖНОСТЬ".
CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
WORKLOAD_GROUP = 'staticrc20',
MEMBERNAME = 'ELTRole',
IMPORTANCE = ABOVE_NORMAL
);