Classificação da carga de trabalho para o pool de SQL dedicado no Azure Synapse Analytics
Este artigo explica o processo de classificação de carga de trabalho de atribuição de um grupo de carga de trabalho e a importância de solicitações de entrada com pools de 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 a solicitações por meio da atribuição de classes de recursos e importância.
Embora haja muitas maneiras de classificar cargas de trabalho do data warehouse, a classificação mais simples e mais comum é a carga e a consulta. Você carrega dados com instruções insert, update e delete. Você consulta os dados usando selects. Uma solução de data warehouse geralmente terá uma política de carga de trabalho para carregar a atividade, como atribuir uma classe de recursos mais alta com mais recursos. Uma política de carga de trabalho diferente pode ser aplicada a consultas, como importância menor em comparação às atividades de carregamento.
Você também pode subclassificar suas cargas de trabalho de carregamento e consulta. A subclasse 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 subclasse. Transformações grandes podem ser atribuídas a classes de recursos maiores. A maior importância pode ser usada para garantir que os principais dados de vendas foram carregados antes dos dados meteorológicos ou de um feed de dados social.
Nem todas as instruções são classificadas, pois não exigem recursos nem precisam de importância para influenciar a execução. Comandos DBCC
e instruções BEGIN
, COMMIT
e ROLLBACK TRANSACTION
não são classificados.
Processo de classificação
A classificação do pool SQL dedicado é obtida hoje atribuindo usuários a uma função que tenha uma classe de recurso correspondente atribuída a ele usando sp_addrolemember. A capacidade de caracterizar solicitações além de um logon para uma classe de recurso é limitada a essa capacidade. Um método mais rico para classificação agora está disponível com a sintaxe CREATE WORKLOAD CLASSIFIER. Com essa sintaxe, os usuários do pool de SQL dedicado podem atribuir importância e quantos recursos do sistema são atribuídos a uma solicitação por meio do parâmetro workload_group
.
Peso da classificação
Como parte do processo de classificação, o peso está em vigor para determinar qual grupo de carga de trabalho é atribuído. O peso é o seguinte:
Parâmetro do classificador | Peso |
---|---|
MEMBERNAME:USER | 64 |
MEMBERNAME:ROLE | 32 |
WLM_LABEL | 16 |
WLM_CONTEXT | 8 |
START_TIME/END_TIME | 4 |
O parâmetro MEMBERNAME
é 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 o usuário será maior e, portanto, o respectivo classificador será escolhido.
Se um usuário for um membro de várias funções com classes de recursos diferentes atribuídos ou correspondentes 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.
Observação
Classificar o comportamento de 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). Embora a identidade gerenciada do pool de SQL dedicado autônomo mantenha a identidade atribuída, para workspaces do Azure Synapse, a identidade gerenciada é executada como dbo
. Isso não pode ser alterado. Por padrão, a função dbo é classificada para smallrc. A criação de um classificador para a função dbo permite atribuir solicitações a um grupo de carga de trabalho diferente de smallrc. Se o 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 junto com a classificação da função dbo.
Com exceção do 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 padrão.
Classificadores do sistema
Classificação de carga de trabalho tem classificadores de carga de trabalho do sistema. Os classificadores de 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. Classificadores de sistema não podem ser descartados. Para exibir classificadores de sistema, você pode executar a consulta abaixo:
SELECT * FROM sys.workload_management_workload_classifiers where classifier_id <= 12
Misturar atribuições de classe de recurso com classificadores
Classificadores de sistema criados em seu nome fornecem um caminho fácil para migrar para a classificação de carga de trabalho. Usar 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 cenário a seguir.
- Um data warehouse existente tem um usuário de banco de dados DBAUser atribuído à função de classe de recurso largerc. A atribuição de 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 que elas sejam mapeadas para mediumrc e alta importância.
- Quando o DBAUser faz logon 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 indesejada, recomendamos que você remova os mapeamentos de função de classe de recurso ao criar classificadores de carga de trabalho. O código a seguir retorna associações de função de classe de recurso existentes. Execute sp_droprolemember para cada 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;
Conteúdo relacionado
- Para obter mais informações sobre como criar um classificador, consulte CREATE WORKLOAD CLASSIFIER (Transact-SQL).
- Consulte o Início Rápido sobre como criar um classificador de carga de trabalho Criar um classificador de carga de trabalho.
- Confira os artigos de instruções Configurar a importância da carga de trabalho e como Gerenciar e monitorar o gerenciamento de carga de trabalho.
- Confira sys.dm_pdw_exec_requests para exibir consultas e a importância atribuída.