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.
Nota
Consulte a seção Misturando atribuições de classe de recurso com classificadores no documento de conceito de Classificação de Carga de Trabalho para obter orientação sobre como usar grupos de carga de trabalho e classes de recursos ao mesmo tempo.
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