Converter Classes de Recursos em Grupos de Carga de Trabalho

Os grupos de carga de trabalho fornecem um mecanismo para isolar e conter recursos do sistema. Além disso, os grupos de carga de trabalho permitem definir regras de execução para as solicitações em execução neles. Uma regra de execução de tempo limite de consulta permite que consultas fugitivas sejam canceladas sem a intervenção do usuário. Este artigo explica como usar uma classe de recurso existente e criar um grupo de carga de trabalho com uma configuração semelhante. Além disso, uma regra de tempo limite de consulta opcional é adicionada.

Noções básicas sobre a configuração de classe de recurso existente

Os grupos de carga de trabalho exigem um parâmetro chamado REQUEST_MIN_RESOURCE_GRANT_PERCENT que especifica a porcentagem de recursos gerais do sistema alocados por solicitação. A alocação de recursos é feita para classes de recursos alocando slots de simultaneidade. Para determinar o valor a ser especificado para REQUEST_MIN_RESOURCE_GRANT_PERCENT, use o sys.dm_workload_management_workload_groups_stats Detran. Por exemplo, a consulta abaixo retorna um valor que pode ser usado para o REQUEST_MIN_RESOURCE_GRANT_PERCENT parâmetro para criar um grupo de carga de trabalho semelhante ao staticrc40.

SELECT Request_min_resource_grant_percent = Effective_request_min_resource_grant_percent
  FROM sys.dm_workload_management_workload_groups_stats
  WHERE name = 'staticrc40'

Nota

Os grupos de carga de trabalho operam com base na porcentagem dos recursos gerais do sistema.

Como os grupos de carga de trabalho operam com base na porcentagem dos recursos gerais do sistema, à medida que você aumenta e diminui a escala, a porcentagem de recursos alocados para classes de recursos estáticos em relação aos recursos gerais do sistema muda. Por exemplo, staticrc40 em DW1000c aloca 19,2% dos recursos totais do sistema. No DW2000c, 9,6% são alocados. Esse modelo é semelhante se você deseja aumentar a escala para simultaneidade versus alocar mais recursos por solicitação.

Criar grupo de carga de trabalho

Com o conhecido REQUEST_MIN_RESOURCE_GRANT_PERCENT, você pode usar a sintaxe CREATE WORKLOAD GROUP para criar o grupo de carga de trabalho. Opcionalmente, você pode especificar um MIN_PERCENTAGE_RESOURCE que seja maior que zero para isolar recursos para o grupo de carga de trabalho. Além disso, você pode, opcionalmente, especificar CAP_PERCENTAGE_RESOURCE menos de 100 para limitar a quantidade de recursos que o grupo de carga de trabalho pode consumir.

Usando mediumrc como base para um exemplo, o código abaixo define o MIN_PERCENTAGE_RESOURCE para dedicar 10% dos recursos do sistema e wgDataLoads garante que uma consulta será capaz de executar o tempo todo. Além disso, CAP_PERCENTAGE_RESOURCE é definido como 40% e limita esse grupo de carga de trabalho a quatro solicitações simultâneas. Ao definir o QUERY_EXECUTION_TIMEOUT_SEC parâmetro como 3600, qualquer consulta executada por mais de 1 hora será automaticamente cancelada.

CREATE WORKLOAD GROUP wgDataLoads WITH  
( REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10
 ,MIN_PERCENTAGE_RESOURCE = 10
 ,CAP_PERCENTAGE_RESOURCE = 40
 ,QUERY_EXECUTION_TIMEOUT_SEC = 3600)

Criar o classificador

Anteriormente, o mapeamento de consultas para classes de recursos era feito com sp_addrolemember. Para obter a mesma funcionalidade e mapear solicitações para grupos de carga de trabalho, use a sintaxe CREATE WORKLOAD CLASSIFIER. O uso sp_addrolemember só permitia mapear recursos para uma solicitação com base em um login. Um classificador fornece opções adicionais além do login, tais como: - rótulo - sessão - tempo O exemplo abaixo atribui consultas do login que também têm o OPTION LABEL definido para factloads o grupo wgDataLoads de carga de AdfLogin trabalho criado acima.

CREATE WORKLOAD CLASSIFIER wcDataLoads WITH  
( WORKLOAD_GROUP = 'wgDataLoads'
 ,MEMBERNAME = 'AdfLogin'
 ,WLM_LABEL = 'factloads')

Teste com uma consulta de exemplo

Abaixo está uma consulta de exemplo e uma consulta DMV para garantir que o grupo de carga de trabalho e o classificador estejam configurados corretamente.

SELECT SUSER_SNAME() --should be 'AdfLogin'

--change to a valid table AdfLogin has access to
SELECT TOP 10 *
  FROM nation
  OPTION (label='factloads')

SELECT request_id, [label], classifier_name, group_name, command
  FROM sys.dm_pdw_exec_requests
  WHERE [label] = 'factloads'
  ORDER BY submit_time DESC

Próximos passos