Classificação da carga de trabalho do conjunto de SQL dedicado no Azure Synapse Analytics

Este artigo explica o processo de classificação da carga de trabalho de atribuição de um grupo de cargas de trabalho e a importância para os pedidos recebidos com conjuntos de SQL dedicados no Azure Synapse.

Classificação

A classificação de gestão de cargas de trabalho permite que as políticas de carga de trabalho sejam aplicadas aos pedidos através da atribuição de classes de recursos e importância.

Embora existam muitas formas de classificar cargas de trabalho de armazenamento de dados, a classificação mais simples e comum é a carga e a consulta. Carrega dados com instruções de inserção, atualização e eliminação. Pode consultar os dados através de seleções. Muitas vezes, uma solução de armazenamento de dados terá uma política de carga de trabalho para a atividade de carga, como atribuir uma classe de recursos mais elevada com mais recursos. Pode aplicar-se uma política de carga de trabalho diferente às consultas, como a menor importância em comparação com as atividades de carregamento.

Também pode subclassificar as cargas de trabalho de carga e de consulta. A subclassificação dá-lhe mais controlo sobre as cargas de trabalho. Por exemplo, as cargas de trabalho de consulta podem consistir em atualizações de cubos, consultas de dashboard ou consultas ad-hoc. Pode classificar cada uma destas cargas de trabalho de consulta com diferentes classes de recursos ou definições de importância. A carga também pode beneficiar da subclassificação. As grandes transformações podem ser atribuídas a classes de recursos maiores. A importância mais alta pode ser utilizada para garantir que os principais dados de vendas são carregados antes dos dados meteorológicos ou de um feed de dados sociais.

Nem todas as instruções são classificadas porque não necessitam de recursos ou precisam de importância para influenciar a execução. As instruções DBCC, BEGIN, COMMIT e ROLLBACK TRANSACTION não são classificadas.

Processo de classificação

A classificação do conjunto de SQL dedicado é obtida atualmente ao atribuir utilizadores a uma função que tenha uma classe de recursos correspondente atribuída ao mesmo com sp_addrolemember. A capacidade de caracterizar pedidos para além de um início de sessão numa classe de recursos é limitada a esta capacidade. Está agora disponível um método mais avançado para classificação com a sintaxe CREATE WORKLOAD CLASSIFIER . Com esta sintaxe, os utilizadores dedicados do conjunto de SQL podem atribuir importância e a quantidade de recursos de sistema atribuídos a um pedido através do workload_group parâmetro .

Ponderação da classificação

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

Parâmetro do Classificador Peso
MEMBERNAME:USER 64
MEMBERNAME:ROLE 32
WLM_LABEL 16
WLM_CONTEXT 8
START_TIME/END_TIME 4

O membername parâmetro é obrigatório. No entanto, se o nome de membro especificado for um utilizador de base de dados em vez de uma função de base de dados, a ponderação para o utilizador é superior e, portanto, esse classificador é escolhido.

Se um utilizador for membro de várias funções com classes de recursos diferentes atribuídas ou correspondidas em vários classificadores, é atribuída ao utilizador a atribuição de classe de recursos mais elevada. Este comportamento é consistente com o comportamento de atribuição de classe de recursos existente.

Nota

A classificação do comportamento das identidades geridas (MI) difere entre o conjunto de SQL dedicado nas áreas de trabalho Azure Synapse e o conjunto de SQL dedicado autónomo (anteriormente SQL DW). Enquanto a MI do conjunto de SQL dedicado autónomo mantém a identidade atribuída, para Azure Synapse áreas de trabalho, a MI é executada como dbo. Esta opção não pode ser alterada. A função dbo, por predefinição, é classificada como smallrc. Criar um classificador para a função dbo permite atribuir pedidos a um grupo de cargas de trabalho que não seja smallrc. Se o dbo por si só for demasiado genérico para a classificação e tiver impactos mais amplos, considere utilizar a classificação baseada na etiqueta, na sessão ou no tempo em conjunto com a classificação da função dbo.

Classificadores de sistema

A classificação da carga de trabalho tem classificadores de cargas de trabalho do sistema. Os classificadores de sistema mapeiam as associações de funções de classe de recursos existentes a alocações de recursos da classe de recursos com importância normal. Os classificadores de sistema não podem ser removidos. Para ver classificadores de sistema, pode executar a consulta abaixo:

SELECT * FROM sys.workload_management_workload_classifiers where classifier_id <= 12

Misturar atribuições de classes de recursos com classificadores

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

Considere o seguinte cenário:

  • Um armazém de dados existente tem um utilizador de base de dados DBAUser atribuído à função de classe de recursos biggerc. A atribuição da classe de recursos foi feita com sp_addrolemember.
  • O armazém de dados está agora atualizado com a gestão da carga de trabalho.
  • Para testar a nova sintaxe de classificação, a função de base de dados DBARole (da qual o DBAUser é membro), tem um classificador criado para os mesmos que os mapeia para mediumrc e importância elevada.
  • Quando o DBAUser inicia sessão e executa uma consulta, a consulta será atribuída a biggerc. Uma vez que um utilizador tem precedência sobre a associação a uma função.

Para simplificar a resolução de problemas de classificação incorreta, recomendamos que remova os mapeamentos de funções da classe de recursos à medida que cria classificadores de cargas de trabalho. O código abaixo devolve associações de funções de classe de recursos existentes. Execute sp_droprolemember para cada nome de membro devolvido da classe de recursos 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;

Passos seguintes