CREATE WORKLOAD CLASSIFIER (Transact-SQL)
Aplica-se a: Azure Synapse Analytics
Cria um objeto de classificador para uso no gerenciamento de carga de trabalho. O classificador alinha solicitações de entrada a um grupo de carga de trabalho com base nos parâmetros especificados na definição de instrução do classificador. Os classificadores são avaliados com o envio de cada solicitação. Se uma solicitação não corresponder a um classificador, ela será atribuída ao grupo de carga de trabalho padrão. O grupo de carga de trabalho padrão é a classe de smallrc
recurso.
Observação
A classificação do comportamento de MIs (identidades gerenciadas) difere entre o pool de SQL dedicado nos workspaces do Azure Synapse e o pool de SQL dedicado autônomo (antigo SQL DW). Enquanto a MI do pool de SQL dedicado autônomo mantém a identidade atribuída, os workspaces do Azure Synapse adicionam MI à função dbo. Isso não pode ser alterado. A função dbo , por padrão, é classificada como smallrc
. A criação de um classificador para a função dbo permite atribuir solicitações a um grupo de carga de trabalho diferente do smallrc
. Se dbo sozinho for muito genérico para classificação e tiver impactos mais amplos, considere usar a classificação baseada em rótulo, sessão ou tempo em conjunto com a classificação de função dbo .
Convenções de sintaxe de Transact-SQL
Sintaxe
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 } ] )
[ ; ]
Observação
Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
Argumentos
classifier_name
Especifique o nome pelo qual o classificador de carga de trabalho é identificado. classifier_name é sysname. Esse parâmetro pode ter até 128 caracteres e deve ser exclusivo na instância.
WORKLOAD_GROUP = 'nome'
Quando as condições são atendidas pelas regras de classificador, o nome mapeia a solicitação para um grupo de carga de trabalho. name é sysname. Esse parâmetro pode ter até 128 caracteres e deve ser um nome de grupo de carga de trabalho válido no momento da criação do classificador.
Os grupos de carga de trabalho disponíveis podem ser encontrados na exibição de catálogo sys.workload_management_workload_groups.
NOME_DO_MEMBRO = 'security_account'
A conta de segurança usada para classificar. security_account é sysname, sem padrão. security_account pode ser um usuário de banco de dados, função de banco de dados, logon do Microsoft Entra ou grupo do Microsoft Entra.
Observação
Use a user_name()
função, quando conectada ao sistema, para verificar se o MEMBERNAME
processo de classificação usará para classificar a solicitação. Verificar o com a função pode ser útil para solucionar problemas de user_name()
classificação da MEMBERNAME
ID do Microsoft Entra ou da entidade de serviço. Se user_name()
retornar dbo
, você pode usar dbo como o MEMBERNAME
para classificar as solicitações. Todos os membros da função dbo serão classificados. Parâmetros de classificação adicionais, como WLM_LABEL
ou WLM_CONTEXT
também podem ser usados para classificar especificamente solicitações de várias contas do Microsoft Entra mapeadas para a função dbo .
WLM_LABEL
Especifica o valor do rótulo com que uma solicitação pode ser classificada. Label é um parâmetro opcional do tipo nvarchar(255). Use OPTION (LABEL) na solicitação para corresponder à configuração do classificador.
Por exemplo:
CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
WORKLOAD_GROUP = 'wgDataLoad',
MEMBERNAME = 'ELTRole',
WLM_LABEL = 'dimension_loads'
);
SELECT COUNT(*) FROM DimCustomer
OPTION (LABEL = 'dimension_loads');
WLM_CONTEXT
Especifica o valor do contexto da sessão com que uma solicitação pode ser classificada. WLM_CONTEXT
é um parâmetro opcional do tipo nvarchar(255). Use o sys.sp_set_session_context com o nome da variável igual a wlm_context
antes de enviar uma solicitação para definir o contexto da sessão.
Por exemplo:
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 e END_TIME
Especifica a hora de início e a hora de término em relação às quais uma solicitação pode ser classificada. Ambos START_TIME
e END_TIME
são do HH:mm
formato no fuso horário UTC. START_TIME
e END_TIME
devem ser especificados juntos.
Por exemplo:
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 }
Especifica a importância relativa de uma solicitação. IMPORTANCE
é uma das seguintes opções:
LOW
BELOW_NORMAL
NORMAL
(padrão)ABOVE_NORMAL
HIGH
Se IMPORTANCE
não for especificado, a configuração de importância do grupo de carga de trabalho será usada. A importância padrão do grupo de carga de trabalho é NORMAL
. A importância influencia a ordem na qual as solicitações são agendadas, oferecendo primeiro acesso a recursos e bloqueios.
Comentários
O número máximo de classificadores definidos pelo usuário é 100
. Não há suporte para configurações adicionais além desse limite. Recomendamos que você agrupe classificadores em uma categoria comum para aplicação eficiente de uma única configuração, em várias cargas de trabalho ou usuários.
Peso do parâmetro de classificação
Uma solicitação pode corresponder a vários classificadores. Há uma ponderação para os parâmetros do classificador. O classificador de correspondência com maior peso é usado para atribuir um grupo de carga de trabalho e uma importância. O peso é o seguinte:
Parâmetro do classificador | Peso |
---|---|
USER |
64 |
ROLE |
32 |
WLM_LABEL |
16 |
WLM_CONTEXT |
8 |
START_TIME /END_TIME |
4 |
Considere as seguintes configurações de classificador.
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'
);
O usuário userloginA
está configurado para os dois classificadores. Se userloginA
executar uma consulta com um rótulo igual a salesreport
entre 18h e 7h UTC, a solicitação será classificada para o wgDashboards
grupo de carga de trabalho com HIGH
importância. A expectativa pode ser classificar a solicitação como wgUserQueries
com importância para relatórios fora do horário comercial, mas a ponderação de WLM_LABEL
é maior queEND_TIME
START_TIME
/ .LOW
A ponderação de classifierA
é 80
(64
para o usuário, mais 16
para WLM_LABEL
). A ponderação de classifierB
é 68
(64
para o usuário, 4
para START_TIME
/END_TIME
). Nesse caso, você pode adicionar WLM_LABEL
ao classifierB
.
Para obter mais informações, consulte Ponderação de carga de trabalho.
Permissões
Requer a permissão CONTROL DATABASE
.
Exemplos
O exemplo seguinte mostra como criar um classificador de carga de trabalho denominado wgcELTRole
. Ele usa o staticrc20
grupo de carga de trabalho, o usuário ELTRole
e define a IMPORTÂNCIA como ABOVE_NORMAL
.
CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
WORKLOAD_GROUP = 'staticrc20',
MEMBERNAME = 'ELTRole',
IMPORTANCE = ABOVE_NORMAL
);