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.

Ícone de vínculo de tópicoConvençõ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 | "default"
    É 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çãoObservaçã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 delimitados (Mecanismo de Banco de Dados).

    ObservaçãoObservaçã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çãoObservaçã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çãoObservaçã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çãoObservaçã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.

    Para obter mais informações sobre as mensagens de erro do Administrador de Recursos, consulte Solucionando problemas do Administrador de Recursos.

  • REQUEST_MAX_CPU_TIME_SEC = value
    Especifica o tempo máximo, em segundos, que uma consulta pode aguardar até que um recurso se torne disponível antes de falhar. value deve ser zero ou um número inteiro positivo. A configuração padrão de value, 0, que usa um cálculo interno baseado no custo da consulta para determinar o tempo máximo.

    ObservaçãoObservação

    O Administrador de Recursos não impedirá que uma solicitação continue 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çãoObservaçã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 grau máximo de paralelismo (DOP) 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çãoObservaçã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, número de CPUs).

    Observação sobre cuidadosCuidado

    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 o 'grau máximo de paralelismo' sp_configure.

    • O grupo de carga de trabalho MAX_DOP substitui o 'grau máximo de paralelismo' sp_configure.

    • Se a consulta for marcada como serial (MAX_DOP = 1 ) em tempo de compilação, não poderá ser revertida para paralela em tempo de execução, independentemente do grupo de cargas 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 cargas de trabalho. value deve ser 0 ou um número inteiro positivo. A configuração padrão de value, 0, permite solicitações ilimitadas.

  • 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 delimitados (Mecanismo de Banco de Dados).

    ObservaçãoObservaçã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 Estados do 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 2008. 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