Классификатор 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 весит (8064для пользователя, а также 16 для WLM_LABEL). Вес classifierB весит (6864для пользователя). 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
);