Compartilhar via


CREATE WORKLOAD GROUP (Transact-SQL)

Selecionar um produto

Na linha a seguir, selecione o nome do produto em que você tem interesse e somente as informações do produto serão exibidas.

* SQL Server *  

 

SQL Server e Instância Gerenciada de 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 Resource Governor não está disponível em todas as edições do SQL Server. Para obter uma lista de recursos com suporte nas edições do SQL Server, confira Edições e recursos com suporte no SQL Server 2022.

Convençõ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" ]
    [ [ , ] EXTERNAL external_pool_name | "default" ] ]
    } ]
[ ; ]

Argumentos

group_name

É o nome definido pelo usuário do grupo de carga de trabalho. group_name é alfanumérico, pode ter até 128 caracteres, deve ser exclusivo dentro de uma instância do SQL Server e deve obedecer às regras de identificadores de banco de dados.

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 (padrão)
  • HIGH

Observação

Internamente, cada configuração de importância é armazenada como um número usado para cálculos.

IMPORTANCE é local para o pool de recursos. Os 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 = valor

Especifica o máximo de memória que uma única solicitação pode usar do pool. valor é um percentual relativo ao tamanho do pool de recursos especificado por MAX_MEMORY_PERCENT. O valor padrão é 25.

valor é um inteiro até o SQL Server 2017 (14.x) e o intervalo permitido é de 1 a 100. Começando com SQL Server 2019 (15.x), o valor é um tipo de dados float e o intervalo permitido é de 0 a 100.

Importante

A quantidade especificada se refere apenas à memória de concessão de execução da consulta.

A configuração de value como 0 impede a execução de consultas com as operações SORT e HASH JOIN em grupos de cargas de trabalho definidos pelo usuário.

Não é recomendável definir value com um valor maior que 70, pois o servidor poderá 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.

Se os requisitos de memória de consulta excederem o limite especificado por esse parâmetro, o servidor fará o seguinte:

  • Para grupos de cargas 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 cargas 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 = valor

Especifica o tempo máximo de CPU, em segundos, que uma solicitação pode usar. value precisa ser 0 ou um inteiro positivo. A configuração padrão de value é 0, o que significa ilimitado.

Observação

Por padrão, o Resource Governor 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.

Importante

Começando com o SQL Server 2016 (13.x) SP2 e SQL Server 2017 (14.x) CU3 e usando o sinalizador de rastreamento 2422, o Resource Governor anulará uma solicitação quando o tempo máximo for excedido.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = valor

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). value precisa ser 0 ou um 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.

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 poderá obter apenas a concessão de memória mínima, resultando em uma queda no desempenho de consulta.

MAX_DOP = valor

Especifica o grau máximo de paralelismo (MAXDOP) para execução de consulta paralela. value precisa ser 0 ou um inteiro positivo. O intervalo permitido para value é 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 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, 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.

Observação

O grupo de carga de trabalho MAX_DOP substitui a configuração do servidor para o grau máximo de paralelismo e a configuração no escopo do MAXDOP banco de dados.

Dica

Para fazer isso no nível da consulta, use a dica de MAXDOP consulta. Definir o grau máximo de paralelismo como uma dica de consulta funciona, desde que não exceda o grupo de carga de trabalho do MAX_DOP. Se o valor de dica de consulta MAXDOP exceder o valor que está configurado usando o Resource Governor, o Mecanismo de Banco de Dados do SQL Server usará o valor MAX_DOP do Resource Governor. A dica de consulta do MAXDOP sempre substitui a configuração de servidor para o grau máximo de paralelismo.

Para fazer isso no nível do banco de dados, use a configuração no escopo do MAXDOP banco de dados.

Para fazer isso no nível do servidor, use o MAXDOP (grau máximo de paralelismo) na opção de configuração do servidor.

GROUP_MAX_REQUESTS = valor

Especifica o número máximo de solicitações simultâneas permitido para execução no grupo de carga de trabalho. value precisa ser 0 ou um inteiro positivo. A configuração padrão de valor é 0 e 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 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 é fornecido ou se o argumento USING não é usado, o grupo de carga de trabalho é colocado no pool padrão predefinido do Resource Governor.

"default" é uma palavra reservada e, quando usada com USING, deve ficar entre aspas ("") ou colchetes ([]).

Observaçã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 ordenação com diferenciação de maiúsculas e minúsculas. Servidores com ordenação sem diferenciação de maiúsculas e minúsculas, como SQL_Latin1_General_CP1_CI_AS, tratarão "default" e "Default" da mesma forma.

EXTERNAL external_pool_name | "padrão"

Aplica-se a: SQL Server 2016 (13.x) e posterior.

O grupo de carga de trabalho pode especificar um pool de recursos externo. Você pode definir um grupo de carga de trabalho e associá-lo a dois pools:

  • Um pool de recursos para cargas de trabalho e consultas do SQL Server
  • Um pool de recursos externo para processos externos. Para obter mais informações, confira sp_execute_external_script (Transact-SQL).

Comentários

Quando REQUEST_MEMORY_GRANT_PERCENT é usado, a criação de índice tem permissão para usar mais memória do workspace do que a concedida inicialmente, para melhorar o desempenho. Esse tratamento especial tem o suporte do Resource Governor no SQL Server. 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.

O limite de MAX_DOP é definido por tarefa. Não é um limite por solicitação ou por consulta. Isso significa que, durante uma execução de consulta paralela, uma solicitação única pode gerar várias tarefas que são atribuídas a um agendador. Para saber mais, confira o Guia de arquitetura de threads e tarefas.

Quando MAX_DOP for usado e uma 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 definição de configuração do servidor. Depois de configurar o MAX_DOP, ele só poderá ser reduzido devido à pressã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.

Criação de índice em uma tabela particionada

A memória consumida pela criação de índice na tabela particionada não alinhada é 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 do Resource Governor, poderá ocorrer uma falha na criação do índice. Como o grupo de carga de trabalho "default" permite que uma consulta exceda o limite por consulta com o mínimo de memória necessária, o usuário talvez possa executar a mesma criação de índice no grupo de carga de trabalho "default" caso o pool de recursos "default" tenha memória total suficiente configurada para executar tal consulta.

Permissões

Requer a permissão CONTROL SERVER.

Exemplo

Crie um grupo de carga de trabalho chamado newReports, que usa as configurações padrão do Resource Governor e está no pool padrão desse Resource Governor. O exemplo especifica o pool default, mas isso não é necessário.

CREATE WORKLOAD GROUP newReports
WITH
    (REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
      , REQUEST_MAX_CPU_TIME_SEC = 100
      , MAX_DOP = 4)
USING "default" ;
GO

Confira também

* Instância Gerenciada de SQL *  

 

SQL Server e Instância Gerenciada de 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 Resource Governor não está disponível em todas as edições do SQL Server. Para obter uma lista de recursos com suporte nas edições do SQL Server, confira Edições e recursos com suporte no SQL Server 2022.

Convençõ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" ]
    [ [ , ] EXTERNAL external_pool_name | "default" ] ]
    } ]
[ ; ]

Argumentos

group_name

É o nome definido pelo usuário do grupo de carga de trabalho. group_name é alfanumérico, pode ter até 128 caracteres, deve ser exclusivo dentro de uma instância do SQL Server e deve obedecer às regras de identificadores de banco de dados.

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 (padrão)
  • HIGH

Observação

Internamente, cada configuração de importância é armazenada como um número usado para cálculos.

IMPORTANCE é local para o pool de recursos. Os 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 = valor

Especifica o máximo de memória que uma única solicitação pode usar do pool. valor é um percentual relativo ao tamanho do pool de recursos especificado por MAX_MEMORY_PERCENT. O valor padrão é 25.

valor é um inteiro até o SQL Server 2017 (14.x) e o intervalo permitido é de 1 a 100. Começando com SQL Server 2019 (15.x), o valor é um tipo de dados float e o intervalo permitido é de 0 a 100.

Importante

A quantidade especificada se refere apenas à memória de concessão de execução da consulta.

A configuração de value como 0 impede a execução de consultas com as operações SORT e HASH JOIN em grupos de cargas de trabalho definidos pelo usuário.

Não é recomendável definir value com um valor maior que 70, pois o servidor poderá 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.

Se os requisitos de memória de consulta excederem o limite especificado por esse parâmetro, o servidor fará o seguinte:

  • Para grupos de cargas 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 cargas 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 = valor

Especifica o tempo máximo de CPU, em segundos, que uma solicitação pode usar. value precisa ser 0 ou um inteiro positivo. A configuração padrão de value é 0, o que significa ilimitado.

Observação

Por padrão, o Resource Governor 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.

Importante

Começando com o SQL Server 2016 (13.x) SP2 e SQL Server 2017 (14.x) CU3 e usando o sinalizador de rastreamento 2422, o Resource Governor anulará uma solicitação quando o tempo máximo for excedido.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = valor

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). value precisa ser 0 ou um 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.

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 poderá obter apenas a concessão de memória mínima, resultando em uma queda no desempenho de consulta.

MAX_DOP = valor

Especifica o grau máximo de paralelismo (MAXDOP) para execução de consulta paralela. value precisa ser 0 ou um inteiro positivo. O intervalo permitido para value é 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 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, 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.

Observação

O grupo de carga de trabalho MAX_DOP substitui a configuração do servidor para o grau máximo de paralelismo e a configuração no escopo do MAXDOP banco de dados.

Dica

Para fazer isso no nível da consulta, use a dica de MAXDOP consulta. Definir o grau máximo de paralelismo como uma dica de consulta funciona, desde que não exceda o grupo de carga de trabalho do MAX_DOP. Se o valor de dica de consulta MAXDOP exceder o valor que está configurado usando o Resource Governor, o Mecanismo de Banco de Dados do SQL Server usará o valor MAX_DOP do Resource Governor. A dica de consulta do MAXDOP sempre substitui a configuração de servidor para o grau máximo de paralelismo.

Para fazer isso no nível do banco de dados, use a configuração no escopo do MAXDOP banco de dados.

Para fazer isso no nível do servidor, use o MAXDOP (grau máximo de paralelismo) na opção de configuração do servidor.

GROUP_MAX_REQUESTS = valor

Especifica o número máximo de solicitações simultâneas permitido para execução no grupo de carga de trabalho. value precisa ser 0 ou um inteiro positivo. A configuração padrão de valor é 0 e 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 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 é fornecido ou se o argumento USING não é usado, o grupo de carga de trabalho é colocado no pool padrão predefinido do Resource Governor.

"default" é uma palavra reservada e, quando usada com USING, deve ficar entre aspas ("") ou colchetes ([]).

Observaçã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 ordenação com diferenciação de maiúsculas e minúsculas. Servidores com ordenação sem diferenciação de maiúsculas e minúsculas, como SQL_Latin1_General_CP1_CI_AS, tratarão "default" e "Default" da mesma forma.

EXTERNAL external_pool_name | "padrão"

Aplica-se a: SQL Server 2016 (13.x) e posterior.

O grupo de carga de trabalho pode especificar um pool de recursos externo. Você pode definir um grupo de carga de trabalho e associá-lo a dois pools:

  • Um pool de recursos para cargas de trabalho e consultas do SQL Server
  • Um pool de recursos externo para processos externos. Para obter mais informações, confira sp_execute_external_script (Transact-SQL).

Comentários

Quando REQUEST_MEMORY_GRANT_PERCENT é usado, a criação de índice tem permissão para usar mais memória do workspace do que a concedida inicialmente, para melhorar o desempenho. Esse tratamento especial tem o suporte do Resource Governor no SQL Server. 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.

O limite de MAX_DOP é definido por tarefa. Não é um limite por solicitação ou por consulta. Isso significa que, durante uma execução de consulta paralela, uma solicitação única pode gerar várias tarefas que são atribuídas a um agendador. Para saber mais, confira o Guia de arquitetura de threads e tarefas.

Quando MAX_DOP for usado e uma 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 definição de configuração do servidor. Depois de configurar o MAX_DOP, ele só poderá ser reduzido devido à pressã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.

Criação de índice em uma tabela particionada

A memória consumida pela criação de índice na tabela particionada não alinhada é 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 do Resource Governor, poderá ocorrer uma falha na criação do índice. Como o grupo de carga de trabalho "default" permite que uma consulta exceda o limite por consulta com o mínimo de memória necessária, o usuário talvez possa executar a mesma criação de índice no grupo de carga de trabalho "default" caso o pool de recursos "default" tenha memória total suficiente configurada para executar tal consulta.

Permissões

Requer a permissão CONTROL SERVER.

Exemplo

Crie um grupo de carga de trabalho chamado newReports, que usa as configurações padrão do Resource Governor e está no pool padrão desse Resource Governor. O exemplo especifica o pool default, mas isso não é necessário.

CREATE WORKLOAD GROUP newReports
WITH
    (REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
      , REQUEST_MAX_CPU_TIME_SEC = 100
      , MAX_DOP = 4)
USING "default" ;
GO

Confira também

* Azure Synapse
Analytics *
 

 

Azure Synapse Analytics

Cria um grupo de carga de trabalho. Grupos de carga de trabalho são contêineres para um conjunto de solicitações e são a base de como o gerenciamento de cargas de trabalho é configurado em um sistema. Os grupos de cargas de trabalho fornecem a capacidade de reservar recursos para ter isolamento da cargas de trabalho, conter recursos, definir recursos por solicitação e aderir às regras de execução. Quando a instrução for concluída, as configurações estarão em vigor.

Convenções de sintaxe de Transact-SQL

CREATE WORKLOAD GROUP group_name
 WITH
 (   MIN_PERCENTAGE_RESOURCE = value 
   , CAP_PERCENTAGE_RESOURCE = value 
   , REQUEST_MIN_RESOURCE_GRANT_PERCENT = value
  [ [ , ] REQUEST_MAX_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH } ]
  [ [ , ] QUERY_EXECUTION_TIMEOUT_SEC = value ] )
  [ ; ]

group_name
Especifica o nome pelo qual o grupo de carga de trabalho é identificado. group_name é um sysname. Ele pode ter até 128 caracteres e deve ser exclusivo dentro da instância.

MIN_PERCENTAGE_RESOURCE = value
Especifica uma alocação de recurso mínima garantida para este grupo de carga de trabalho, que não é compartilhada com outros grupos de carga de trabalho. A memória é o único recurso regido por esse parâmetro. value é um intervalo de inteiros de 0 a 100. A soma de min_percentage_resource em todos os grupos de carga de trabalho não pode exceder 100. O valor de min_percentage_resource não pode ser maior que cap_percentage_resource. Há valores mínimos efetivos permitidos por nível de serviço. Confira Valores Efetivos para obter mais detalhes.

CAP_PERCENTAGE_RESOURCE = value
Especifica a utilização de recursos máxima para todas as solicitações em um grupo de carga de trabalho. Os recursos de CPU e memória são limitados por esse parâmetro. O intervalo de inteiros permitido para o valor é de 1 a 100. O valor de cap_percentage_resource precisa ser maior que min_percentage_resource. O valor efetivo para cap_percentage_resource pode ser reduzido se min_percentage_resource estiver configurado como maior que zero em outros grupos de carga de trabalho.

REQUEST_MIN_RESOURCE_GRANT_PERCENT = value
Define a quantidade mínima de recursos alocados por solicitação. A memória é o único recurso regido por esse parâmetro. value é um parâmetro obrigatório com um intervalo decimal entre 0,75 e 100,00. O valor de request_min_resource_grant_percent deve ser múltiplo de 0,25, deve ser um fator de min_percentage_resource e ser menor que cap_percentage_resource. Há valores mínimos efetivos permitidos por nível de serviço. Confira Valores Efetivos para obter mais detalhes.

Por exemplo:

CREATE WORKLOAD GROUP wgSample 
WITH
  ( MIN_PERCENTAGE_RESOURCE = 26                -- integer value
    , REQUEST_MIN_RESOURCE_GRANT_PERCENT = 3.25 -- factor of 26 (guaranteed a minimum of 8 concurrency)
    , CAP_PERCENTAGE_RESOURCE = 100 )

considere os valores que são usados para as classes de recurso como uma diretriz para request_min_resource_grant_percent. A tabela a seguir contém alocações de recursos para Gen2.

Classe de recurso Porcentagem de recursos
Smallrc 3%
Mediumrc 10%
Largerc 22%
Xlargerc 70%

REQUEST_MAX_RESOURCE_GRANT_PERCENT = value

Define a quantidade máxima de recursos alocados por solicitação. A memória é o único recurso regido por esse parâmetro. value é um parâmetro decimal opcional com um valor padrão igual ao request_min_resource_grant_percent. value deve ser maior ou igual a request_min_resource_grant_percent. Quando o valor de request_max_resource_grant_percent é maior que request_min_resource_grant_percent e os recursos do sistema estão disponíveis, recursos adicionais são alocados a uma solicitação.

IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }

Especifica a importância padrão de uma solicitação no grupo de carga de trabalho. A importância é uma das seguintes, com NORMAL sendo o padrão:

  • LOW
  • BELOW_NORMAL
  • NORMAL (padrão)
  • ABOVE_NORMAL
  • HIGH

A importância definida no grupo de carga de trabalho é uma importância padrão para todas as solicitações no grupo de carga de trabalho. Um usuário também pode definir a importância no nível do classificador, que pode substituir a configuração de importância do grupo de carga de trabalho. Isso permite diferenciar a importância das solicitações em um grupo de carga de trabalho para ter acesso a recursos não reservados mais rapidamente. Quando a soma de min_percentage_resource entre grupos de carga de trabalho é menor que 100, há recursos não reservados que são atribuídos em uma base de importância.

QUERY_EXECUTION_TIMEOUT_SEC = value

Especifica o tempo máximo, em segundos, que uma consulta pode ser executada antes de ser cancelada. value precisa ser 0 ou um inteiro positivo. A configuração padrão para o valor é 0, em que a consulta nunca expira. QUERY_EXECUTION_TIMEOUT_SEC conta depois que a consulta está em estado de execução, não quando a consulta é enfileirada.

Comentários

Os grupos de carga de trabalho correspondentes às classes de recursos são criados automaticamente para ter compatibilidade com versões anteriores. Esses grupos de carga de trabalho definidos pelo sistema não podem ser descartados. Oito grupos de carga de trabalho adicionais definidos pelo usuário podem ser criados.

Se um grupo de cargas de trabalho for criado com min_percentage_resource maior que zero, a instrução CREATE WORKLOAD GROUP entrará na fila até que haja recursos suficientes para criar o grupo de carga de trabalho.

Valores efetivos

Os parâmetros min_percentage_resource, cap_percentage_resource, request_min_resource_grant_percent e request_max_resource_grant_percent têm valores efetivos que são ajustados no contexto do nível de serviço atual e da configuração de outros grupos de carga de trabalho.

O parâmetro request_min_resource_grant_percent tem um valor efetivo porque há recursos mínimos necessários por consulta, dependendo do nível de serviço. Por exemplo, no nível de serviço mais baixo, DW100c, são necessários pelo menos 25% dos recursos por solicitação. Se o grupo de carga de trabalho estiver configurado com 3% em request_min_resource_grant_percent e request_max_resource_grant_percent, os valores efetivos para ambos os parâmetros serão ajustados para 25% quando a instância for iniciada. Se a instância for expandida para DW1000c, os valores configurados e efetivos para ambos os parâmetros serão de 3%, porque esse é o valor mínimo com suporte no nível de serviço. Se a instância for expandida para um valor maior que DW1000c, os valores configurados e efetivos para ambos os parâmetros permanecerão em 3%. Confira a tabela abaixo para obter mais detalhes sobre os valores efetivos nos diferentes níveis de serviço.

Nível de serviço Valor mais baixo efetivo para REQUEST_MIN_RESOURCE_GRANT_PERCENT Máximo de consultas simultâneas
DW100c 25% 4
DW200c 12,5% 8
DW300c 8% 12
DW400c 6,25% 16
DW500c 5% 20
DW1000c 3% 32
DW1500c 3% 32
DW2000c 2% 48
DW2500c 2% 48
DW3000c 1,5% 64
DW5000c 1,5% 64
DW6000c 0,75% 128
DW7500c 0,75% 128
DW10000c 0,75% 128
DW15000c 0,75% 128
DW30000c 0,75% 128

O parâmetro min_percentage_resource deve ser maior ou igual ao request_min_resource_grant_percent efetivo. Um grupo de carga de trabalho com um min_percentage_resource configurado menor do que o min_percentage_resource efetivo tem o valor ajustado para zero em runtime. Quando isso acontece, os recursos configurados para min_percentage_resource podem ser compartilhados entre todos os grupos de carga de trabalho. Por exemplo, o grupo de carga de trabalho wgAdHoc com um min_percentage_resource de 10% em execução em DW1000c teria um min_percentage_resource efetivo de 10% (3% é o valor mínimo com suporte em DW1000c). wgAdhoc em DW100c teria um min_percentage_resource efetivo de 0%. Os 10% configurados para wgAdhoc seriam compartilhados entre todos os grupos de carga de trabalho.

O parâmetro cap_percentage_resource também tem um valor efetivo. Se um grupo de carga de trabalho wgAdhoc estiver configurado com um cap_percentage_resource de 100% e outro grupo de carga de trabalho wgDashboards for criado com 25% min_percentage_resource, o cap_percentage_resource efetivo para wgAdhoc se tornará 75%.

A maneira mais fácil de entender os valores de tempo de execução para seus grupos de carga de trabalho é consultar o modo de exibição do sistema sys.dm_workload_management_workload_groups_stats.

Permissões

Requer a permissão CONTROL DATABASE

Confira também