ALTER WORKLOAD GROUP (Transact-SQL)ALTER WORKLOAD GROUP (Transact-SQL)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Altera uma configuração existente de grupo de cargas de trabalho do Resource Governor e a atribui opcionalmente a um pool de recursos do Resource Governor.Changes an existing Resource Governor workload group configuration, and optionally assigns it to a Resource Governor resource pool.

Ícone de link do tópico Convenções da sintaxe Transact-SQL.Topic link icon Transact-SQL Syntax Conventions.

SintaxeSyntax

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" } ]  
[ ; ]  

ArgumentosArguments

group_name | "default"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.Is the name of an existing user-defined workload group or the Resource Governor default workload group.

Observação

O Administrador de Recursos cria os grupos internos e padrão quando o SQL ServerSQL Server é instalado.Resource Governor creates the "default" and internal groups when SQL ServerSQL Server is installed.

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.The option "default" must be enclosed by quotation marks ("") or brackets ([]) when used with ALTER WORKLOAD GROUP to avoid conflict with DEFAULT, which is a system reserved word. Para obter mais informações, consulte Database Identifiers.For more information, see Database Identifiers.

Observação

Os grupos de carga de trabalho predefinidos e os pools de recursos usam nomes de letras minúsculas, como "padrão".Predefined workload groups and resource pools all use lowercase names, such as "default". Isso deve ser levado em consideração nos servidores que usam ordenação com diferenciação de maiúsculas e minúsculas.This should be taken into account for servers that use case-sensitive collation. Os 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 maneira.Servers with case-insensitive collation, such as SQL_Latin1_General_CP1_CI_AS, will treat "default" and "Default" as the same.

IMPORTANCE = { LOW | MEDIUM | HIGH }IMPORTANCE = { LOW | MEDIUM | HIGH }
Especifica a importância relativa de uma solicitação no grupo de carga de trabalho.Specifies the relative importance of a request in the workload group. A importância é uma das seguintes:Importance is one of the following:

  • LOWLOW
  • MEDIUM (padrão)MEDIUM (default)
  • HIGHHIGH

Observação

Internamente, cada configuração de importância é armazenada como um número usado para cálculos.Internally each importance setting is stored as a number that is used for calculations.

IMPORTANCE é local para o pool de recursos; grupos de cargas de trabalho de importâncias diferentes no mesmo pool de recursos afetam uns aos outros, mas não afetam grupos de cargas de trabalho em outro pool de recursos.IMPORTANCE is local to the resource pool; workload groups of different importance inside the same resource pool affect each other, but do not affect workload groups in another resource pool.

REQUEST_MAX_MEMORY_GRANT_PERCENT = value REQUEST_MAX_MEMORY_GRANT_PERCENT = value
Especifica o máximo de memória que uma única solicitação pode usar do pool.Specifies the maximum amount of memory that a single request can take from the pool. valor é um percentual relativo ao tamanho do pool de recursos especificado por MAX_MEMORY_PERCENT.value is a percentage relative to the resource pool size specified by MAX_MEMORY_PERCENT.

value é um inteiro até SQL Server 2017 (14.x)SQL Server 2017 (14.x) e um flutuante que começa com SQL Server 2019 (15.x)SQL Server 2019 (15.x).value is an integer up to SQL Server 2017 (14.x)SQL Server 2017 (14.x) and a float starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x). O valor padrão é 25.Default value is 25. O intervalo permitido para value é de 1 a 100.The allowed range for value is from 1 through 100.

Observação

A quantidade especificada se refere apenas à memória de concessão de execução da consulta.The amount specified only refers to query execution grant memory.

Importante

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.Setting value to 0 prevents queries with SORT and HASH JOIN operations in user-defined workload groups from running.

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.It is not recommended to set value greater than 70 because the server may be unable to set aside enough free memory if other concurrent queries are running. Isso pode eventualmente levar ao erro 8645, tempo limite da consulta excedido.This may eventually lead to query time-out error 8645.

Observação

Se os requisitos de memória de consulta excederem o limite especificado por esse parâmetro, o servidor fará o seguinte:If the query memory requirements exceed the limit that is specified by this parameter, the server does the following:

  • 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.For user-defined workload groups, the server tries to reduce the query degree of parallelism until the memory requirement falls under the limit, or until the degree of parallelism equals 1. Se o requisito de memória de consulta ainda for maior que o limite, ocorrerá o erro 8657.If the query memory requirement is still greater than the limit, error 8657 occurs.

  • Para grupos de cargas de trabalho internos e padrão, o servidor permite que a consulta obtenha a memória necessária.For internal and default workload groups, the server permits the query to obtain the required memory.

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.Be aware that both cases are subject to time-out error 8645 if the server has insufficient physical memory.

REQUEST_MAX_CPU_TIME_SEC = value REQUEST_MAX_CPU_TIME_SEC = value
Especifica o tempo máximo de CPU, em segundos, que uma solicitação pode usar.Specifies the maximum amount of CPU time, in seconds, that a request can use. value precisa ser 0 ou um inteiro positivo.value must be 0 or a positive integer. A configuração padrão de value é 0, o que significa ilimitado.The default setting for value is 0, which means unlimited.

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.By default, Resource Governor will not prevent a request from continuing if the maximum time is exceeded. Porém, um evento será gerado.However, an event will be generated. Para obter mais informações, consulte Classe de evento CPU Threshold Exceeded.For more information, see CPU Threshold Exceeded Event Class.

Importante

Começando com o SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 e SQL Server 2017 (14.x)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.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 and SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU3, and using trace flag 2422, Resource Governor will abort a request when the maximum time is exceeded.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC =valueREQUEST_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).Specifies the maximum time, in seconds, that a query can wait for memory grant (work buffer memory) to become available.

Observação

Nem sempre uma consulta falha quando o tempo limite de concessão de memória é atingido.A query does not always fail when memory grant time-out is reached. A consulta falhará somente se houver muitas consultas simultâneas em execução.A query will only fail if there are too many concurrent queries running. Caso contrário, a consulta poderá obter apenas a concessão de memória mínima, resultando em uma queda no desempenho de consulta.Otherwise, the query may only get the minimum memory grant, resulting in reduced query performance.

value deve ser um inteiro positivo.value must be a positive integer. A configuração padrão de value, 0, usa um cálculo interno baseado no custo da consulta para determinar o tempo máximo.The default setting for value, 0, uses an internal calculation based on query cost to determine the maximum time.

MAX_DOP =value MAX_DOP =value
Especifica o DOP (grau máximo de paralelismo) para solicitações paralelas.Specifies the maximum degree of parallelism (DOP) for parallel requests. value deve ser 0 ou um inteiro positivo, de 1 a 255.value must be 0 or a positive integer, 1 though 255. Quando value for 0, o servidor escolherá o grau máximo de paralelismo.When value is 0, the server chooses the max degree of parallelism. Essa é a configuração padrão e recomendada.This is the default and recommended setting.

Observação

O valor real que o Mecanismo de Banco de DadosDatabase Engine define para MAX_DOP poderia ser menos que o valor especificado.The actual value that the Mecanismo de Banco de DadosDatabase Engine sets for MAX_DOP by might be less than the specified value. O valor final é determinado pela fórmula min(255, número de CPUs) .The final value is determined by the formula min(255, number of CPUs).

Cuidado

Alterar MAX_DOP pode comprometer o desempenho de um servidor.Changing MAX_DOP can adversely affect a server's performance. 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.If you must change MAX_DOP, we recommend that it be set to a value that is less than or equal to the maximum number of hardware schedulers that are present in a single NUMA node. Nós recomendamos que você não defina MAX_DOP como um valor maior que 8.We recommend that you do not set MAX_DOP to a value greater than 8.

MAX_DOP é tratado como segue:MAX_DOP is handled as follows:

  • MAX_DOP como dica de consulta será cumprido, contanto que não exceda o grupo de cargas de trabalho MAX_DOP.MAX_DOP as a query hint is honored as long as it does not exceed workload group MAX_DOP.

  • MAX_DOP como uma dica de consulta sempre substitui o 'grau máximo de paralelismo' sp_configure.MAX_DOP as a query hint always overrides sp_configure 'max degree of parallelism'.

  • O grupo de carga de trabalho MAX_DOP substitui o 'grau máximo de paralelismo' sp_configure.Workload group MAX_DOP overrides sp_configure 'max degree of parallelism'.

  • 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.If the query is marked as serial (MAX_DOP = 1) at compile time, it cannot be changed back to parallel at run time regardless of the workload group or sp_configure setting.

Depois de ser configurado, o DOP só pode ser reduzido sob pressão de concessão de memória.After DOP is configured, it can only be lowered on grant memory pressure. A reconfiguração do grupo de carga de trabalho não é visível durante a espera na fila de concessão de memória.Workload group reconfiguration is not visible while waiting in the grant memory queue.

GROUP_MAX_REQUESTS = value 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.Specifies the maximum number of simultaneous requests that are allowed to execute in the workload group. value precisa ser 0 ou um inteiro positivo.value must be 0 or a positive integer. A configuração padrão de value, 0, permite solicitações ilimitadas.The default setting for value, 0, allows unlimited requests. 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.When the maximum concurrent requests are reached, a user in that group can log in, but is placed in a wait state until concurrent requests are dropped below the value specified.

USING { pool_name | "default" }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.Associates the workload group with the user-defined resource pool identified by pool_name, which in effect puts the workload group in the resource pool. 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 Resource Governor.If pool_name is not provided or if the USING argument is not used, the workload group is put in the predefined Resource Governor default pool.

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.The option "default" must be enclosed by quotation marks ("") or brackets ([]) when used with ALTER WORKLOAD GROUP to avoid conflict with DEFAULT, which is a system reserved word. Para obter mais informações, consulte Database Identifiers.For more information, see Database Identifiers.

Observação

A opção "default" diferencia maiúsculas de minúsculas.The option "default" is case-sensitive.

RemarksRemarks

ALTER WORKLOAD GROUP é permitido no grupo padrão.ALTER WORKLOAD GROUP is allowed on the default group.

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.Changes to the workload group configuration do not take effect until after ALTER RESOURCE GOVERNOR RECONFIGURE is executed. Ao alterar um plano que afeta a configuração, a nova configuração apenas terá efeito nos planos anteriormente armazenados em cache após a execução de DBCC FREEPROCCACHE (pool_name), em que pool_name é o nome de um pool de recursos do Resource Governor ao qual o grupo de carga de trabalho está associado.When changing a plan affecting setting, the new setting will only take effect in previously cached plans after executing DBCC FREEPROCCACHE (pool_name), where pool_name is the name of a Resource Governor resource pool on which the workload group is associated with.

  • Se você estiver alterando MAX_DOP para 1, a execução de DBCC FREEPROCCACHE não será necessária, porque os planos paralelos podem ser executados em modo serial.If changing MAX_DOP to 1, executing DBCC FREEPROCCACHE is not required because parallel plans can run in serial mode. No entanto, isso pode não ser tão eficiente quanto um plano compilado como um plano serial.However, it may not be as efficient as a plan compiled as a serial plan.

  • Se você estiver alterando MAX_DOP de 1 para 0 ou para um valor maior que 1, a execução de DBCC FREEPROCCACHE não será necessária.If changing MAX_DOP from 1 to 0 or a value greater than 1, executing DBCC FREEPROCCACHE is not required. No entanto, os planos seriais não podem ser executados em paralelo, portanto, limpar o respectivo cache permitirá que novos planos sejam possivelmente compilados usando paralelismo.However, serial plans cannot run in parallel, so clearing the respective cache will allow new plans to potentially be compiled using parallelism.

Cuidado

A limpeza de planos armazenados em cache de um pool de recursos que está associado a mais de um grupo de carga de trabalho afetará todos os grupos de cargas de trabalho com o pool de recursos definido pelo usuário identificado por pool_name.Clearing cached plans from a resource pool that is associated with more than one workload group will affect all workload groups with the user-defined resource pool identified by pool_name.

Ao executar instruções DDL, é recomendável estar familiarizado com os estados do Resource Governor.When executing DDL statements, we recommend that you be familiar with Resource Governor states. Para obter mais informações, consulte Resource Governor.For more information, see Resource Governor.

REQUEST_MEMORY_GRANT_PERCENT: Em SQL Server 2005 (9.x)SQL Server 2005 (9.x), a criação de índice tem permissão para usar mais memória do workspace do que a concedida inicialmente para melhorar o desempenho.REQUEST_MEMORY_GRANT_PERCENT: In SQL Server 2005 (9.x)SQL Server 2005 (9.x), index creation is allowed to use more workspace memory than initially granted for improved performance. Esse tratamento especial tem suporte do Administrador de Recursos em versões posteriores. No entanto, 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 cargas de trabalho.This special handling is supported by Resource Governor in later versions, however, the initial grant and any additional memory grant are limited by resource pool and workload group settings.

Criação de índice em uma tabela particionadaIndex Creation on a Partitioned Table

A memória consumida pela criação de índice na tabela particionada não alinhada é proporcional ao número de partições envolvidas.The memory consumed by index creation on non-aligned partitioned table is proportional to the number of partitions involved. 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 Administrador de Recursos, poderá ocorrer uma falha na criação do índice.If the total required memory exceeds the per-query limit (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposed by the Resource Governor workload group setting, this index creation may fail to execute. 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 (9.x)SQL Server 2005 (9.x), 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.Because the "default" workload group allows a query to exceed the per-query limit with the minimum required memory to start for SQL Server 2005 (9.x)SQL Server 2005 (9.x) compatibility, the user may be able to run the same index creation in "default" workload group, if the "default" resource pool has enough total memory configured to run such query.

PermissõesPermissions

Requer a permissão CONTROL SERVER.Requires CONTROL SERVER permission.

ExemplosExamples

O exemplo a seguir mostra como alterar a importância de solicitações no grupo padrão de MEDIUM para LOW.The following example shows how to change the importance of requests in the default group from MEDIUM to 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.The following example shows how to move a workload group from the pool that it's in to the default pool.

ALTER WORKLOAD GROUP adHoc  
USING [default];  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

Consulte TambémSee Also

Administrador de Recursos Resource Governor
CREATE WORKLOAD GROUP (Transact-SQL) CREATE WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL) DROP WORKLOAD GROUP (Transact-SQL)
CREATE RESOURCE POOL (Transact-SQL) CREATE RESOURCE POOL (Transact-SQL)
ALTER RESOURCE POOL (Transact-SQL) ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL) DROP RESOURCE POOL (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)ALTER RESOURCE GOVERNOR (Transact-SQL)