Compartir a través de


CREATE RESOURCE POOL (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Crea un regulador de recursos grupo de recursos. Un grupo de recursos representa un subconjunto de los recursos físicos (CPU, memoria e E/S) de una instancia del motor de base de datos. El regulador de recursos permite reservar o limitar los recursos del servidor entre grupos de recursos, hasta un máximo de 64 grupos.

El regulador de recursos no está disponible en todas las ediciones de SQL Server. Para obtener una lista de las características compatibles con las ediciones de SQL Server, consulte Ediciones y características admitidas de SQL Server 2022.

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

CREATE RESOURCE POOL pool_name
[ 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

Es el nombre definido por el usuario para identificar el grupo de recursos de servidor. pool_name es alfanumérico, puede tener hasta 128 caracteres, debe ser único dentro de una instancia del motor de base de datos y debe cumplir las reglas para los identificadores de base de datos de .

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 de ancho de banda máximo de CPU para que coincida con 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 igual 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 utilizar la capacidad de CPU existente por encima del valor de MAX_CPU_PERCENT si está disponible, pero sin sobrepasar el 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.

Permisos

Requiere el permiso CONTROL SERVER.

Ejemplos

Para obtener ejemplos adicionales de configuración del regulador de recursos, consulte ejemplos de configuración del regulador de recursos y procedimientos recomendados.

Creación de un grupo de recursos

En este ejemplo se creó un grupo de recursos denominado bigPool. Este grupo usa la configuración predeterminada del regulador de recursos.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

Establecer límites y reservas de CPU y memoria

En este ejemplo se configura 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.

CREATE 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)
     );

Establecimiento de la reserva y el límite de IOPS

En este ejemplo se reservan 200 IOPS por volumen para el grupo mediante MIN_IOPS_PER_VOLUMEy limita el IOPS por volumen a 1000 mediante MAX_IOPS_PER_VOLUME. Estos valores rigen las operaciones de lectura y escritura físicas totales que están disponibles para las solicitudes que usan el grupo de recursos.

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

CREATE RESOURCE POOL PoolAdmin
WITH (
     MIN_IOPS_PER_VOLUME = 200,
     MAX_IOPS_PER_VOLUME = 1000
     );