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

SE APLICA A: síSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cambia una configuración existente del grupo de cargas de trabajo de Resource Governor y, opcionalmente, la asigna a un grupo de recursos de Resource Governor.Changes an existing Resource Governor workload group configuration, and optionally assigns it to a Resource Governor resource pool.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL.Topic link icon Transact-SQL Syntax Conventions.

SintaxisSyntax

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"
Es el nombre de un grupo de cargas de trabajo definido por un usuario ya existente o el grupo de cargas de trabajo predeterminado del regulador de recursos.Is the name of an existing user-defined workload group or the Resource Governor default workload group.

Nota

El regulador de recursos crea los grupos "default" e internos al instalarse SQL ServerSQL Server.Resource Governor creates the "default" and internal groups when SQL ServerSQL Server is installed.

La opción "default" debe estar incluida entre comillas ("") o corchetes ([]) si se utiliza con ALTER WORKLOAD GROUP para evitar el conflicto con DEFAULT, que es una palabra reservada del 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 obtener más información, vea Database Identifiers.For more information, see Database Identifiers.

Nota

Todos los grupos de cargas de trabajo y de recursos predefinidos usan nombres en minúsculas, como "predeterminado".Predefined workload groups and resource pools all use lowercase names, such as "default". Debe tenerse esto en cuenta en los servidores que usan una intercalación que distingue entre mayúsculas y minúsculas.This should be taken into account for servers that use case-sensitive collation. En los servidores que usan una intercalación que no distingue entre mayúsculas y minúsculas, como SQL_Latin1_General_CP1_CI_AS, los nombres "predeterminado" y "Predeterminado" son equivalentes.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 la importancia relativa de una solicitud en el grupo de cargas de trabajo.Specifies the relative importance of a request in the workload group. IMPORTANCE puede ser es uno de los siguientes valores:Importance is one of the following:

  • LOWLOW
  • MEDIUM (predeterminado)MEDIUM (default)
  • HIGHHIGH

Nota

Internamente, cada valor de IMPORTANCE se almacena como un número que se usa para los cálculos.Internally each importance setting is stored as a number that is used for calculations.

IMPORTANCE es local para el grupo de recursos de servidor; los grupos de cargas de trabajo de importancia distinta dentro del mismo grupo de recursos de servidor se influyen entre sí, pero no influyen en los grupos de cargas de trabajo de otro grupo de recursos de servidor.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 la cantidad máxima de memoria que una única solicitud puede tomar del grupo.Specifies the maximum amount of memory that a single request can take from the pool. valor es un porcentaje relativo al tamaño del grupo de recursos de servidor especificado por MAX_MEMORY_PERCENT.value is a percentage relative to the resource pool size specified by MAX_MEMORY_PERCENT.

El elemento value es un entero hasta SQL Server 2017 (14.x)SQL Server 2017 (14.x), y un elemento de float a partir de 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). El valor predeterminado es de 25.Default value is 25. El intervalo permitido para value es de 1 a 100.The allowed range for value is from 1 through 100.

Nota

La cantidad especificada se refiere únicamente a la memoria concedida para la ejecución de la consulta.The amount specified only refers to query execution grant memory.

Importante

Establecer valor en 0 evita la ejecución de consultas con operaciones SORT y HASH JOIN en grupos de cargas de trabajo definidos por el usuario.Setting value to 0 prevents queries with SORT and HASH JOIN operations in user-defined workload groups from running.

No se recomienda establecer el elemento value en un valor superior a 70 porque es posible que el servidor no pueda reservar memoria suficiente si se están ejecutando otras consultas simultáneas.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. Esto puede dar lugar al final a un error de tiempo de espera de consulta 8645.This may eventually lead to query time-out error 8645.

Nota

Si los requisitos de memoria de consulta superan el límite especificado por este parámetro, el servidor hace lo siguiente:If the query memory requirements exceed the limit that is specified by this parameter, the server does the following:

  • En el caso de los grupos de cargas de trabajo definidos por el usuario, el servidor intenta reducir el grado de paralelismo de consulta hasta que el requisito de memoria cae por debajo del límite, o hasta que el grado de paralelismo sea 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. Si el requisito de memoria de consulta sigue siendo mayor que el límite, se produce el error 8657.If the query memory requirement is still greater than the limit, error 8657 occurs.

  • En el caso de los grupos de cargas de trabajo internos y predeterminados, el servidor permite que la consulta obtenga la memoria necesaria.For internal and default workload groups, the server permits the query to obtain the required memory.

Tenga en cuenta que ambos casos están sujetos a un error de tiempo de espera 8645 si el servidor no tiene suficiente memoria física.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 la cantidad máxima de tiempo de CPU, en segundos, que puede usar una solicitud.Specifies the maximum amount of CPU time, in seconds, that a request can use. valor debe ser 0 o un entero positivo.value must be 0 or a positive integer. El valor predeterminado de value es 0, que indica una cantidad ilimitada.The default setting for value is 0, which means unlimited.

Nota

De forma predeterminada, Resource Governor no evita que una solicitud continúe si se supera el tiempo máximo.By default, Resource Governor will not prevent a request from continuing if the maximum time is exceeded. Sin embargo, se generará un evento.However, an event will be generated. Para obtener más información, vea Clase de eventos Umbral de la CPU superado.For more information, see CPU Threshold Exceeded Event Class.

Importante

A partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 y SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU3, y si se usa la marca de seguimiento 2422, Resource Governor anula una solicitud cuando se supera el tiempo máximo.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 el tiempo máximo, en segundos, que una consulta puede esperar hasta que esté disponible la concesión de memoria (memoria de búfer de trabajo).Specifies the maximum time, in seconds, that a query can wait for memory grant (work buffer memory) to become available.

Nota

Una consulta no tiene por qué generar un error cuando se agota el tiempo de espera para la concesión de memoria.A query does not always fail when memory grant time-out is reached. Solo se producirá un error si se ejecutan demasiadas consultas simultáneamente.A query will only fail if there are too many concurrent queries running. De lo contrario, es posible que la consulta obtenga la concesión de memoria mínima, lo que reducirá su rendimiento.Otherwise, the query may only get the minimum memory grant, resulting in reduced query performance.

value debe ser un entero positivo.value must be a positive integer. El valor predeterminado de valor, 0, usa un cálculo interno basado en el costo de la consulta para determinar el tiempo 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 el grado máximo de paralelismo (DOP) para las solicitudes paralelas.Specifies the maximum degree of parallelism (DOP) for parallel requests. value debe ser 0 o un entero positivo entre 1 y 255.value must be 0 or a positive integer, 1 though 255. Cuando value es 0, el servidor elige el grado máximo de paralelismo.When value is 0, the server chooses the max degree of parallelism. Esta es la configuración predeterminada y recomendada.This is the default and recommended setting.

Nota

El valor real que Motor de base de datosDatabase Engine establece para MAX_DOP puede ser menor que el valor especificado.The actual value that the Motor de base de datosDatabase Engine sets for MAX_DOP by might be less than the specified value. El valor final se determinada mediante la fórmula min(255, número de CPU) .The final value is determined by the formula min(255, number of CPUs).

Precaución

El cambio de MAX_DOP puede afectar negativamente al rendimiento de un servidor.Changing MAX_DOP can adversely affect a server's performance. Si debe cambiar MAX_DOP, se recomienda que se establezca en un valor menor o igual que el número máximo de programadores de hardware que hay en un solo nodo 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. Se recomienda no establecer MAX_DOP en un valor mayor que 8.We recommend that you do not set MAX_DOP to a value greater than 8.

MAX_DOP se trata de la siguiente manera:MAX_DOP is handled as follows:

  • MAX_DOP como sugerencia de consulta, se acepta con tal de que no supere el MAX_DOP del grupo de cargas de trabajo.MAX_DOP as a query hint is honored as long as it does not exceed workload group MAX_DOP.

  • MAX_DOP como sugerencia de consulta, siempre invalida el 'grado máximo de paralelismo' de sp_configure.MAX_DOP as a query hint always overrides sp_configure 'max degree of parallelism'.

  • MAX_DOP del grupo de cargas de trabajo invalida el 'grado máximo de paralelismo' de sp_configure.Workload group MAX_DOP overrides sp_configure 'max degree of parallelism'.

  • Si se marca la consulta en tiempo de compilación como serie (MAX_DOP = 1), no se podrá volver a establecer como paralela en tiempo de ejecución, independientemente del grupo de cargas de trabajo o del valor de 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.

Una vez configurado DOP, solo se puede reducir ante la concesión de presión de memoria.After DOP is configured, it can only be lowered on grant memory pressure. La reconfiguración del grupo de cargas de trabajo no es visible mientras se espera en la cola de concesión de memoria.Workload group reconfiguration is not visible while waiting in the grant memory queue.

GROUP_MAX_REQUESTS = value GROUP_MAX_REQUESTS = value
Especifica el número máximo de solicitudes simultáneas que pueden ejecutarse en el grupo de cargas de trabajo.Specifies the maximum number of simultaneous requests that are allowed to execute in the workload group. valor debe ser 0 o un entero positivo.value must be 0 or a positive integer. El valor predeterminado de valor, 0, permite solicitudes ilimitadas.The default setting for value, 0, allows unlimited requests. Cuando se alcanza el máximo de solicitudes simultáneas, un usuario de ese grupo puede iniciar sesión, pero se coloca en estado de espera hasta que las solicitudes simultáneas caigan por debajo del 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" }
Asocia el grupo de cargas de trabajo al grupo de recursos definido por el usuario identificado por pool_name, lo que coloca el grupo de cargas de trabajo en el grupo 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. Si no se proporciona pool_name o si no se usa el argumento USING, el grupo de cargas de trabajo se coloca en el grupo predeterminado de Resource Governor que se haya definido previamente.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.

La opción "default" debe estar incluida entre comillas ("") o corchetes ([]) si se utiliza con ALTER WORKLOAD GROUP para evitar el conflicto con DEFAULT, que es una palabra reservada del 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 obtener más información, vea Database Identifiers.For more information, see Database Identifiers.

Nota

La opción "default" distingue entre mayúsculas y minúsculas.The option "default" is case-sensitive.

NotasRemarks

ALTER WORKLOAD GROUP está permitido en el grupo predeterminado.ALTER WORKLOAD GROUP is allowed on the default group.

Los cambios en la configuración del grupo de cargas de trabajo no surtirán efecto hasta que se ejecute ALTER RESOURCE GOVERNOR RECONFIGURE.Changes to the workload group configuration do not take effect until after ALTER RESOURCE GOVERNOR RECONFIGURE is executed. Cuando se cambia un plan que afecta al valor, el nuevo valor solo se aplica a los planes previamente almacenados en caché después de ejecutar DBCC FREEPROCCACHE (pool_name), donde pool_name es el nombre de un grupo de recursos de Resource Governor con el que está asociado el grupo de cargas de trabajo.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.

  • Si va a cambiar MAX_DOP a 1, la ejecución de DBCC FREEPROCCACHE no es necesaria porque los planes paralelos se pueden ejecutar en serie.If changing MAX_DOP to 1, executing DBCC FREEPROCCACHE is not required because parallel plans can run in serial mode. Pero puede que no sea tan eficaz como un plan compilado como un plan en serie.However, it may not be as efficient as a plan compiled as a serial plan.

  • Si va a cambiar MAX_DOP de 1 a 0 o a un valor mayor que 1, no es necesario ejecutar DBCC FREEPROCCACHE.If changing MAX_DOP from 1 to 0 or a value greater than 1, executing DBCC FREEPROCCACHE is not required. Pero los planes en serie no se pueden ejecutar en paralelo, así que el borrado de la memoria caché respectiva permite compilar potencialmente nuevos planes mediante paralelismo.However, serial plans cannot run in parallel, so clearing the respective cache will allow new plans to potentially be compiled using parallelism.

Precaución

El borrado de los planes almacenados en caché de un grupo de recursos asociado a más de un grupo de cargas de trabajo afecta a todos los grupos de cargas de trabajo con el grupo de recursos definido por el usuario 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.

Si va a ejecutar instrucciones de DDL, se recomienda familiarizarse primero con los estados de Resource Governor.When executing DDL statements, we recommend that you be familiar with Resource Governor states. Para obtener más información, vea Resource Governor.For more information, see Resource Governor.

REQUEST_MEMORY_GRANT_PERCENT: En SQL Server 2005 (9.x)SQL Server 2005 (9.x), se permite que la creación de índices use más memoria del área de trabajo que la concedida inicialmente para mejorar el rendimiento.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. El regulador de recursos admite este tratamiento especial en versiones posteriores; sin embargo, la concesión inicial y cualquier concesión de memoria adicional están limitadas por la configuración del grupo de cargas de trabajo y del grupo de recursos de servidor.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.

Creación de índices en una tabla con particionesIndex Creation on a Partitioned Table

La memoria usada para la creación de índices en una tabla con particiones no alineada es proporcional al número de particiones involucradas.The memory consumed by index creation on non-aligned partitioned table is proportional to the number of partitions involved. Si la memoria total necesaria supera el límite por consulta (REQUEST_MAX_MEMORY_GRANT_PERCENT) impuesto por la configuración del grupo de cargas de trabajo del regulador de recursos, puede que esta creación de índices no se ejecute.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. Dado que el grupo de cargas de trabajo "predeterminado" permite que una consulta supere el límite por consulta con la memoria mínima necesaria para iniciar la compatibilidad con SQL Server 2005 (9.x)SQL Server 2005 (9.x), es posible que el usuario pueda ejecutar la misma creación de índices en el grupo de cargas de trabajo "predeterminado" si el grupo de recursos de servidor "predeterminado" tiene configurada una memoria total suficiente para ejecutar dicha 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.

PermisosPermissions

Requiere el permiso CONTROL SERVER.Requires CONTROL SERVER permission.

EjemplosExamples

En el ejemplo siguiente se cambia la importancia de las solicitudes en el grupo predeterminado de MEDIUM a 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  

En el ejemplo siguiente se muestra cómo mover un grupo de cargas de trabajo del grupo de recursos actual al predeterminado.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 tambiénSee Also

Regulador 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)