ALTER WORKLOAD GROUP (Transact-SQL)
Altera uma configuração de grupo de cargas de trabalho do Administrador de Recursos existente e a atribui opcionalmente a um pool de recursos do Administrador.
Convenções de sintaxe Transact-SQL.
Sintaxe
ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
[ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
[ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
[ [ , ] MAX_DOP = value ]
[ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]
Argumentos
group_name | "padrão"
É o nome de um grupo de cargas de trabalho existente, definido pelo usuário, ou o grupo de cargas de trabalho padrão do Administrador de Recursos.Observação O Administrador de Recursos cria os grupos internos e padrão quando o SQL Server é instalado.
A opção "default" deve estar entre aspas ("") ou colchetes ([]) quando usado com ALTER WORKLOAD GROUP para evitar conflito com DEFAULT, que é uma palavra reservada do sistema. Para obter mais informações, consulte Identificadores de banco de dados.
Observação Grupos de carga de trabalho e pools de recursos predefinidos usam nomes em letras minúsculas, como "default". Isso deve ser levado em consideração nos servidores que usam agrupamento com diferenciação de maiúsculas e minúsculas. Os servidores com agrupamento sem diferenciação de maiúsculas e minúsculas, como SQL_Latin1_General_CP1_CI_AS, tratarão "default" e "Default" da mesma maneira.
IMPORTANCE = { LOW | MEDIUM | HIGH }
Especifica a importância relativa de uma solicitação no grupo de cargas de trabalho. A importância é uma das seguintes:LOW
MEDIUM (padrão)
HIGH
Observação Internamente, cada configuração de importância é armazenada como um número utilizado em cálculos.
IMPORTANCE é local para o pool de recursos; grupos de carga de trabalho de importâncias diferentes no mesmo pool de recursos afetam uns aos outros, mas não afetam grupos de carga de trabalho em outro pool de recursos.
REQUEST_MAX_MEMORY_GRANT_PERCENT =value
Especifica o máximo de memória que uma única solicitação pode usar do pool. Essa porcentagem é relativa ao tamanho do pool de recursos especificado por MAX_MEMORY_PERCENT.Observação A quantidade especificada se refere apenas à memória de concessão de execução da consulta.
value deve ser 0 ou um número inteiro positivo. O intervalo permitido para value é de 0 a 100. A configuração padrão de value é 25.
Observe o seguinte:
A configuração de value como 0 impede a execução de consultas com as operações SORT e HASH JOIN em grupos de carga de trabalho definidos pelo usuário.
Não é recomendável definir value com um valor maior que 70, pois o servidor pode não conseguir separar memória livre suficiente se outras consultas simultâneas estiverem sendo executadas. Isso pode eventualmente levar ao erro 8645, tempo limite da consulta excedido.
Observação Se os requisitos de memória de consulta excederem o limite especificado por esse parâmetro, o servidor fará o seguinte:
Para grupos de carga de trabalho definidos pelo usuário, o servidor tenta reduzir o grau de paralelismo da consulta, até que o requisito de memória caia abaixo do limite, ou até que o grau de paralelismo seja igual a 1. Se o requisito de memória de consulta ainda for maior que o limite, ocorrerá o erro 8657.
Para grupos de carga de trabalho internos e padrão, o servidor permite que a consulta obtenha a memória necessária.
Esteja ciente de que ambos os casos estarão sujeitos ao erro de tempo limite 8645 se a memória física do servidor for insuficiente.
REQUEST_MAX_CPU_TIME_SEC =value
Especifica o tempo máximo de CPU, em segundos, que uma solicitação pode usar. value deve ser 0 ou um número inteiro positivo. A configuração padrão para value é 0, o que significa ilimitado.Observação O Administrador de Recursos não impedirá a continuação de uma solicitação se o tempo máximo for excedido. Porém, um evento será gerado. Para obter mais informações, consulte Classe de evento CPU Threshold Exceeded.
REQUEST_MEMORY_GRANT_TIMEOUT_SEC =value
Especifica o tempo máximo, em segundos, que uma consulta pode aguardar pela concessão de memória (memória do buffer de trabalho).Observação Nem sempre uma consulta falha quando o tempo limite de concessão de memória é atingido. A consulta falhará somente se houver muitas consultas simultâneas em execução. Caso contrário, a consulta pode obter apenas a concessão de memória mínima, resultando em um desempenho de consulta inferior.
value deve ser um número inteiro positivo. A configuração padrão de value, 0, usa um cálculo interno baseado no custo da consulta para determinar o tempo máximo.
MAX_DOP =value
Especifica o DOP (grau máximo de paralelismo) para solicitações paralelas. value deve ser 0 ou um número inteiro positivo, de 1 a 255. Quando o value for 0, o servidor escolherá o grau máximo de paralelismo. Essa é a configuração padrão e recomendada.Observação O valor real que o Mecanismo de Banco de Dados define para MAX_DOP poderia ser menos que o valor especificado. O valor final é determinado pela fórmula min(255, number of CPUs).
Cuidado Alterar MAX_DOP pode comprometer o desempenho de um servidor. Se você precisar alterar MAX_DOP, nós recomendaremos que seja definido um valor menor que ou igual ao número máximo de agendadores de hardware que existem em um único nó NUMA. Nós recomendamos que você não defina MAX_DOP como um valor maior que 8.
MAX_DOP é tratado como segue:
MAX_DOP como dica de consulta será cumprido, contanto que não exceda o grupo de cargas de trabalho MAX_DOP.
MAX_DOP como uma dica de consulta sempre substitui sp_configure 'max degree of parallelism'.
O grupo de carga de trabalho MAX_DOP substitui sp_configure 'max degree of parallelism'.
Se a consulta for marcada como serial (MAX_DOP = 1 ) em tempo de compilação, ela não poderá ser revertida em paralela em tempo de execução, independentemente do grupo de carga de trabalho ou da configuração sp_configure.
Depois de ser configurado, o DOP só pode ser reduzido sob pressão de concessão de memória. A reconfiguração do grupo de carga de trabalho não é visível durante a espera na fila de concessão de memória.
GROUP_MAX_REQUESTS =value
Especifica o número máximo de solicitações simultâneas permitido para execução no grupo de carga de trabalho. value deve ser 0 ou um número inteiro positivo. A configuração padrão de value, 0, permite solicitações ilimitadas. Quando as solicitações simultâneas máximas são alcançadas, um usuário nesse grupo pode fazer logon, mas é colocado em um estado de espera até que as solicitações simultâneas sejam ignoradas abaixo do valor especificado.USING { pool_name | "default" }
Associa o grupo de cargas de trabalho ao pool de recursos definido pelo usuário, identificado por pool_name, o que, na realidade, coloca o grupo de cargas de trabalho no pool de recursos. Se pool_name não for fornecido ou se o argumento USING não for utilizado, o grupo de cargas de trabalho será colocado no pool padrão predefinido do Administrador de Recursos.A opção "default" deve estar entre aspas ("") ou colchetes ([]) quando usado com ALTER WORKLOAD GROUP para evitar conflito com DEFAULT, que é uma palavra reservada do sistema. Para obter mais informações, consulte Identificadores de banco de dados.
Observação A opção "default" diferencia maiúsculas de minúsculas.
Comentários
ALTER WORKLOAD GROUP é permitido no grupo padrão.
As alterações na configuração do grupo de cargas de trabalho não entrarão em vigor enquanto ALTER RESOURCE GOVERNOR RECONFIGURE não for executado.
Ao executar instruções DDL, é recomendável estar familiarizado com os estados do Administrador de Recursos. Para obter mais informações, consulte Administrador de Recursos.
REQUEST_MEMORY_GRANT_PERCENT: no SQL Server 2005, a criação de índice pode usar mais memória do espaço de trabalho do que aquela inicialmente concedida a fim de melhorar o desempenho. Esse tratamento especial tem o suporte do Administrador de Recursos no SQL Server 2012. Porém, a concessão inicial e qualquer concessão de memória adicional estão limitadas pelas configurações de pool de recursos e de grupo de carga de trabalho.
Criação de índice em uma tabela particionada
A memória consumida pela criação de índice na tabela particionada desalinhada é proporcional ao número de partições envolvidas. Se a memória total necessária exceder o limite por consulta (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposto pela configuração de grupo de cargas de trabalho, poderá ocorrer uma falha na criação do índice. Como o grupo de carga de trabalho "padrão" permite que uma consulta exceda o limite por consulta com o mínimo de memória requerida para iniciar, para compatibilidade com o SQL Server 2005, o usuário talvez possa executar a mesma criação de índice no grupo de carga de trabalho "padrão" caso o pool de recursos "padrão" tenha memória total suficiente configurada para executar tal consulta.
Permissões
Requer a permissão CONTROL SERVER.
Exemplos
O exemplo a seguir mostra como alterar a importância de solicitações no grupo padrão de MEDIUM para LOW.
ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW)
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
O exemplo a seguir mostra como mover um grupo de cargas de trabalho do pool em que ele se encontra para o pool padrão.
ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
Consulte também
Referência
CREATE WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL)
CREATE RESOURCE POOL (Transact-SQL)
ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)