Compartir a través de


ALTER RESOURCE POOL (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Cambia un regulador de recursos existente configuración del grupo de recursos para una instancia del motor de base de datos.

Nota

Para Azure SQL Managed Instance, debe estar en el contexto de la base de datos de master para modificar la configuración del regulador de recursos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ALTER RESOURCE POOL { pool_name | [default] }
[WITH
    ( [ MIN_CPU_PERCENT = value ]
    [ [ , ] MAX_CPU_PERCENT = value ]
    [ [ , ] CAP_CPU_PERCENT = value ]
    [ [ , ] AFFINITY {
                        SCHEDULER = AUTO
                      | ( <scheduler_range_spec> )
                      | NUMANODE = ( <NUMA_node_range_spec> )
                      }]
    [ [ , ] MIN_MEMORY_PERCENT = value ]
    [ [ , ] MAX_MEMORY_PERCENT = value ]
    [ [ , ] MIN_IOPS_PER_VOLUME = value ]
    [ [ , ] MAX_IOPS_PER_VOLUME = value ]
)]
[;]

<scheduler_range_spec> ::=
{SCHED_ID | SCHED_ID TO SCHED_ID}[,...n]

<NUMA_node_range_spec> ::=
{NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID}[,...n]

Argumentos

{ pool_name | [valor predeterminado] }

Es el nombre de un grupo de recursos definido por el usuario existente o el grupo de recursos integrado default.

default debe estar entre corchetes ([]) o comillas ("") cuando se usa con ALTER RESOURCE POOL para evitar un conflicto con DEFAULT, que es una palabra reservada del sistema. Para obtener más información, consulte Identificadores de base de datos.

Los grupos de recursos integrados y los grupos de cargas de trabajo usan todos los nombres en minúsculas, como default. Use el default en minúsculas en los servidores que usan una intercalación que distingue mayúsculas de minúsculas. Los servidores con intercalación que no distinguen mayúsculas de minúsculas tratan default, Defaulty DEFAULT como el mismo valor.

MIN_CPU_PERCENT = valor

Especifica el ancho banda de la CPU promedio garantizado para todas las solicitudes en el grupo de recursos de servidor cuando hay contención de CPU. valor es un entero con un valor predeterminado de 0. El intervalo permitido para value es de 0 a 100.

MAX_CPU_PERCENT = de valor de

Especifica el ancho de banda de CPU promedio máximo que reciben todas las solicitudes del grupo de recursos cuando hay contención de CPU. value es un entero con un valor predeterminado de 100. El intervalo permitido para value es de 1 a 100.

CAP_CPU_PERCENT = valor

Válido para : SQL Server 2012 (11.x) y versiones posteriores.

Especifica un límite máximo en el ancho de banda de CPU que reciben todas las solicitudes del grupo de recursos. Limita el nivel máximo de ancho de banda de CPU para que sea el mismo que el valor especificado. value es un entero con un valor predeterminado de 100. El intervalo permitido para value es de 1 a 100.

Nota

Debido a la naturaleza estadística de la gobernanza de cpu, es posible que observe picos cortos ocasionales que superan el valor especificado en CAP_CPU_PERCENT.

AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}

Válido para : SQL Server 2012 (11.x) y versiones posteriores.

Adjunte el grupo de recursos de servidor a los programadores específicos. El valor predeterminado es AUTO.

Al especificar <scheduler_range_spec> para AFFINITY SCHEDULER afinidad, el grupo de recursos se aplica a los programadores del motor de base de datos identificados por los identificadores especificados. Estos identificadores se asignan a los valores de la columna scheduler_id de sys.dm_os_schedulers.

Al especificar <NUMA_node_range_spec> para AFFINITY NUMANODE afinidad entre el grupo de recursos y los programadores del motor de base de datos que se asignan a las CPU lógicas que corresponden al nodo NUMA especificado o a un intervalo de nodos. Puede usar la siguiente consulta de Transact-SQL para detectar la asignación entre la configuración de NUMA física y los identificadores del programador del motor de base de datos.

SELECT osn.memory_node_id AS numa_node_id,
       sc.cpu_id,
       sc.scheduler_id
FROM sys.dm_os_nodes AS osn
INNER JOIN sys.dm_os_schedulers AS sc
ON osn.node_id = sc.parent_node_id
   AND
   sc.scheduler_id < 1048576;

MIN_MEMORY_PERCENT = de valor de

Especifica la cantidad mínima de memoria del área de trabajo de consulta reservada para el grupo de recursos que no se puede compartir con otros grupos de recursos. valor es un entero con un valor predeterminado de 0. El intervalo permitido para valor es de 0 a 100.

MAX_MEMORY_PERCENT = valor

Especifica la cantidad máxima de memoria del área de trabajo de consulta que pueden usar las solicitudes de este grupo de recursos. value es un entero con un valor predeterminado de 100. El intervalo permitido para value es de 1 a 100.

MIN_IOPS_PER_VOLUME = valor

Válido para : SQL Server 2014 (12.x) y versiones posteriores.

Especifica el número mínimo de operaciones de E/S por segundo (IOPS) por volumen de disco que se deben reservar para el grupo de recursos de servidor. El intervalo permitido para value es de 0 a 2^31-1 (2.147.483.647). Especifique 0 para indicar que no hay un mínimo para el grupo. El valor predeterminado es 0.

MAX_IOPS_PER_VOLUME = de valor de

Válido para : SQL Server 2014 (12.x) y versiones posteriores.

Especifica el número máximo de operaciones de E/S por segundo (IOPS) por volumen de disco que se deben permitir para el grupo de recursos de servidor. El intervalo permitido para value es de 0 a 2^31-1 (2.147.483.647). Especifique 0 para quitar un límite de IOPS para el grupo. El valor predeterminado es 0.

Si el MAX_IOPS_PER_VOLUME de un grupo está establecido en 0, el grupo no se rige por E/S en absoluto y puede tomar todas las IOPS del sistema incluso si otros grupos tienen MIN_IOPS_PER_VOLUME establecido. En este caso, se recomienda establecer el valor de MAX_IOPS_PER_VOLUME para este grupo en un número alto (por ejemplo, el valor máximo 2^31-1) para hacer que esta E/S del grupo se rija y respetar las reservas de IOPS que podrían existir para otros grupos.

Observaciones

La suma de MIN_CPU_PERCENT o MIN_MEMORY_PERCENT para todos los grupos de recursos no puede superar el 100 %.

MIN_IOPS_PER_VOLUME y MAX_IOPS_PER_VOLUME especifique las E/S mínimas y máximas por segundo. Las E/S pueden ser lecturas o escrituras, y pueden ser de cualquier tamaño. Por lo tanto, con los mismos límites de IOPS, el rendimiento mínimo y máximo de E/S puede variar en función de la combinación de tamaños de E/S en la carga de trabajo.

Los valores de MAX_CPU_PERCENT y MAX_MEMORY_PERCENT deben ser mayores o iguales que los valores de MIN_CPU_PERCENT y MIN_MEMORY_PERCENT, respectivamente.

CAP_CPU_PERCENT difiere de MAX_CPU_PERCENT en que las cargas de trabajo asociadas al grupo pueden usar la capacidad de CPU por encima del valor de MAX_CPU_PERCENT si está disponible, pero no por encima del valor de CAP_CPU_PERCENT. Aunque puede haber picos cortos superiores a CAP_CPU_PERCENT, las cargas de trabajo no pueden superar CAP_CPU_PERCENT durante períodos prolongados de tiempo, incluso cuando hay capacidad adicional de CPU disponible.

El porcentaje total de CPU para cada componente afinidad (programador o nodos NUMA) no puede superar el 100 %.

Para más información, consulte Regulador de recursos y grupo de recursos del regulador de recursos.

Planes almacenados en caché

Cuando se cambia un plan que afecta a la configuración, la nueva configuración surte efecto en planes previamente almacenados en caché solo después de ejecutar DBCC FREEPROCCACHE (<pool_name>), donde <pool_name> es el nombre de un grupo de recursos del regulador de recursos.

  • Si va a cambiar AFFINITY de varios programadores a un único programador, no es necesario ejecutar DBCC FREEPROCCACHE porque los planes paralelos se pueden ejecutar en modo serie. Sin embargo, este plan podría ser menos eficaz que un plan compilado como un plan serie.
  • Si va a cambiar AFFINITY de un único programador a varios programadores, no es necesario ejecutar DBCC FREEPROCCACHE. Sin embargo, los planes serie no se pueden ejecutar en paralelo, por lo que borrar la caché respectiva permite que los nuevos planes se compilen potencialmente mediante paralelismo.

Advertencia

Borrar 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 mediante el grupo de recursos definido por el usuario identificado por <pool_name>.

Permisos

Requiere el permiso CONTROL SERVER.

Ejemplos

En el ejemplo siguiente se mantiene toda la configuración actual del grupo de recursos para el grupo de default, excepto para MAX_CPU_PERCENT, que se cambia al 25 por ciento.

ALTER RESOURCE POOL [default] WITH (MAX_CPU_PERCENT = 25);

ALTER RESOURCE GOVERNOR RECONFIGURE;

En el ejemplo siguiente se modifica el grupo de recursos de adhocPool de la siguiente manera:

  • Reserva el 10 % de la CPU y el 5 % de la memoria del área de trabajo de consulta mediante MIN_CPU_PERCENT y MIN_MEMORY_PERCENT respectivamente.
  • Establece un límite de memoria del área de trabajo de consulta del 15 % mediante MAX_MEMORY_PERCENT.
  • Establece un límite de CPU flexible del 20 por ciento un límite de CPU duro del 30 por ciento mediante MAX_CPU_PERCENT y CAP_CPU_PERCENT respectivamente.
  • Afinidad entre el grupo y dos intervalos de CPU lógicas (de 0 a 63 y 128 a 191) mediante AFFINITY SCHEDULER.

Válido para : SQL Server 2012 (11.x) y versiones posteriores.

ALTER RESOURCE POOL adhocPool
WITH (
     MIN_CPU_PERCENT = 10,
     MAX_CPU_PERCENT = 20,
     CAP_CPU_PERCENT = 30,
     MIN_MEMORY_PERCENT = 5,
     MAX_MEMORY_PERCENT = 15,
     AFFINITY SCHEDULER = (0 TO 63, 128 TO 191)
     );

ALTER RESOURCE GOVERNOR RECONFIGURE;