Compartilhar via


CREATE WORKLOAD GROUP (Transact-SQL)

Cria um grupo de carga de trabalho do Administrador de recursos e o associa a um pool de recursos do Administrador de recursos. O Administrador de Recursos está disponível apenas nas edições Enterprise, Developer e Evaluation do SQL Server.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL.

Sintaxe

CREATE WORKLOAD GROUP group_name
[ 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
    É o nome definido pelo usuário para o grupo de carga de trabalho. group_name é alfanumérico, pode ter até 128 caracteres, deve ser exclusivo em uma instância do SQL Server e deve estar de acordo com as regras para identificadores.

  • IMPORTANCE = { LOW | MEDIUM | HIGH }
    Especifica a importância relativa de uma solicitação no grupo de carga de trabalho. A importância é uma das seguintes, com MEDIUM sendo o padrão:

    • LOW

    • MEDIUM

    • HIGH

    ObservaçãoObservação

    Internamente, cada configuração de importância é armazenada como um número usado para 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 da 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çãoObservaçã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 esperar pela disponibilização de uma concessão de memória (memória do buffer do 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 poderá obter apenas a concessão de memória mínima, resultando em uma queda no desempenho de consulta.

    value deve ser 0 ou 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. O intervalo permitido para value varia de 0 a 64. A configuração padrão para value, 0, usa a configuração global. MAX_DOP é tratado como segue:

    • MAX_DOP como dica de consulta é válido, contanto que não exceda o grupo de carga de trabalho MAX_DOP.

    • MAX_DOP como dica de consulta sempre substitui o 'grau máximo de paralelismo' sp_configure no SQL Server 2005.

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

    • Se a consulta for marcada como serial em tempo de compilação, ela não poderá ser revertida a 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 que podem ser executadas 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.

  • USING { pool_name | "default" }
    Associa o grupo de carga de trabalho ao pool de recursos definido pelo usuário identificado por pool_name. Na realidade, isso coloca o grupo de carga de trabalho no pool de recursos. Se pool_name não for fornecido ou se o argumento USING não for usado, o grupo de carga de trabalho será colocado no pool padrão predefinido do Administrador de Recursos.

    "default" é uma palavra reservada e, quando usada com USING, deve ficar entre aspas ("") ou colchetes ([]). Para obter mais informações, consulte Identificadores delimitados (Mecanismo de Banco de Dados).

    ObservaçãoObservação

    Grupos de cargas 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. 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.

Comentários

REQUEST_MEMORY_GRANT_PERCENT: no SQL Server 2005, a criação de índice pode usar mais memória de 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 seguinte mostra como criar um grupo de carga de trabalho denominado newReports. Ele usa as configurações padrão do Administrador de Recursos e está no pool padrão desse Administrador. O exemplo especifica o pool default, mas isso não é necessário.

CREATE WORKLOAD GROUP newReports
    USING "default" ;
GO