Classificação de carga de trabalho para pool SQL dedicado no Azure Synapse Analytics

Este artigo explica o processo de classificação da carga de trabalho da atribuição de um grupo de carga de trabalho e a importância às solicitações de entrada com pools SQL dedicados no Azure Synapse.

Classificação

A classificação de gerenciamento de carga de trabalho permite que as políticas de carga de trabalho sejam aplicadas às solicitações por meio da atribuição de classes e importância de recursos.

Embora existam muitas maneiras de classificar cargas de trabalho de data warehouse, a classificação mais simples e comum é carregar e consultar. Você carrega dados com instruções insert, update e delete. Você consulta os dados usando selects. Uma solução de data warehousing geralmente terá uma política de carga de trabalho para a atividade de carga, como a atribuição de uma classe de recurso mais alta com mais recursos. Uma política de carga de trabalho diferente pode ser aplicada a consultas, como menor importância em comparação com atividades de carga.

Você também pode subclassificar suas cargas de trabalho de carga e consulta. A subclassificação oferece mais controle sobre suas cargas de trabalho. Por exemplo, as cargas de trabalho de consulta podem consistir em atualizações de cubo, consultas de painel ou consultas ad hoc. Você pode classificar cada uma dessas cargas de trabalho de consulta com diferentes classes de recursos ou configurações de importância. A carga também pode se beneficiar da subclassificação. Grandes transformações podem ser atribuídas a classes de recursos maiores. A maior importância pode ser usada para garantir que os principais dados de vendas sejam carregados antes dos dados meteorológicos ou de um feed de dados sociais.

Nem todas as declarações são classificadas, pois não requerem recursos ou precisam de importância para influenciar a execução. DBCC comandos, BEGIN, COMMITe ROLLBACK TRANSACTION instruções não são classificados.

Processo de classificação

A classificação para pool SQL dedicado é obtida hoje atribuindo usuários a uma função que tem uma classe de recurso correspondente atribuída a ele usando sp_addrolemember. A capacidade de caracterizar solicitações além de um login em uma classe de recurso é limitada com esse recurso. Um método mais avançado para classificação está agora disponível com a sintaxe CREATE WORKLOAD CLASSIFIER. Com essa sintaxe, os usuários dedicados do pool SQL podem atribuir importância e quantos recursos do sistema são atribuídos a uma solicitação por meio do workload_group parâmetro.

Ponderação de classificação

Como parte do processo de classificação, a ponderação está em vigor para determinar qual grupo de carga de trabalho é atribuído. A ponderação é a seguinte:

Parâmetro do classificador Espessura
NOME DE MEMBRO:USUÁRIO 64
NOME DO MEMBRO:FUNÇÃO 32
WLM_LABEL 16
WLM_CONTEXT 8
START_TIME/END_TIME 4

O MEMBERNAME parâmetro é obrigatório. No entanto, se o nome do membro especificado for um usuário de banco de dados em vez de uma função de banco de dados, a ponderação para usuário será maior e, portanto, esse classificador será escolhido.

Se um usuário for membro de várias funções com diferentes classes de recursos atribuídas ou correspondidas em vários classificadores, o usuário receberá a atribuição de classe de recurso mais alta. Esse comportamento é consistente com o comportamento de atribuição de classe de recurso existente.

Nota

A classificação do comportamento de identidades gerenciadas difere entre o pool SQL dedicado nos espaços de trabalho do Azure Synapse e o pool SQL dedicado autônomo (anteriormente SQL DW). Enquanto a identidade gerenciada do pool SQL dedicado autônomo mantém a identidade atribuída, para espaços de trabalho do Azure Synapse a identidade gerenciada é executada como dbo. Não é possível alterar este comportamento. 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 rótulo, sessão ou classificação baseada no tempo em conjunto com a classificação de função dbo.

Exceto para smallrc, as classes de recursos dinâmicos são implementadas como funções de banco de dados predefinidas. Smallrc não aparece como uma função de banco de dados, mas é a classe de recurso Default.

Classificadores de sistema

A classificação de carga de trabalho tem classificadores de carga de trabalho do sistema. Os classificadores do sistema mapeiam associações de função de classe de recurso existentes para alocações de recursos de classe de recurso com importância normal. Os classificadores de sistema não podem ser descartados. Para visualizar os classificadores do sistema, você pode executar a consulta abaixo:

SELECT * FROM sys.workload_management_workload_classifiers where classifier_id <= 12

Misture atribuições de classe de recursos com classificadores

Os classificadores de sistema criados em seu nome fornecem um caminho fácil para migrar para a classificação de carga de trabalho. O uso de mapeamentos de função de classe de recurso com precedência de classificação pode levar a uma classificação incorreta à medida que você começa a criar novos classificadores com importância.

Considere o seguinte cenário:

  • Um data warehouse existente tem um DBAUser de usuário de banco de dados atribuído à função de classe de recurso largerc. A atribuição da classe de recurso foi feita com sp_addrolemember.
  • O data warehouse agora é atualizado com o gerenciamento de carga de trabalho.
  • Para testar a nova sintaxe de classificação, a função de banco de dados DBARole (da qual DBAUser é membro), tem um classificador criado para eles mapeando-os para mediumrc e alta importância.
  • Quando o DBAUser efetua login e executa uma consulta, a consulta será atribuída a largerc. Porque um usuário tem precedência sobre uma associação de função.

Para simplificar a solução de problemas de classificação incorreta, recomendamos que você remova os mapeamentos de função de classe de recurso ao criar classificadores de carga de trabalho. O código abaixo retorna associações de função de classe de recurso existentes. Execute sp_droprolemember para cada nome de membro retornado da classe de recurso correspondente.

SELECT  r.name AS [Resource Class]
,       m.name AS membername
FROM    sys.database_role_members rm
JOIN    sys.database_principals AS r ON rm.role_principal_id = r.principal_id
JOIN    sys.database_principals AS m ON rm.member_principal_id = m.principal_id
WHERE   r.name IN ('mediumrc','largerc','xlargerc','staticrc10','staticrc20','staticrc30','staticrc40','staticrc50','staticrc60','staticrc70','staticrc80');
--for each row returned run in the previous query
EXEC sp_droprolemember '[Resource Class]', membername;