Compartilhar via


CREATE RESOURCE POOL (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Cria um pool de recursos de do administrador de recursos. Um pool de recursos representa um subconjunto dos recursos físicos (CPU, memória e E/S) de uma instância do Mecanismo de Banco de Dados. O administrador de recursos permite que você reserve ou limite recursos de servidor entre pools de recursos, até um máximo de 64 pools.

O administrador de recursos não está disponível em todas as edições do SQL Server. Para obter uma lista de recursos compatíveis com as edições do SQL Server, consulte Editions e recursos com suporte do SQL Server 2022.

Nota

Para a Instância Gerenciada de SQL do Azure, você deve estar no contexto do banco de dados master para modificar a configuração do administrador de recursos.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

É o nome definido pelo usuário para o pool de recursos. pool_name é alfanumérico, pode ter até 128 caracteres, deve ser exclusivo em uma instância do Mecanismo de Banco de Dados e deve estar em conformidade com as regras para identificadores de banco de dados.

MIN_CPU_PERCENT = de valor

Especifica a média de largura de banda de CPU garantida para todas as solicitações no pool de recursos quando houver contenção de CPU. value é um inteiro com uma configuração padrão de 0. O intervalo permitido para value é de 0 a 100.

MAX_CPU_PERCENT = de valor

Especifica a largura de banda média máxima da CPU que todas as solicitações no pool de recursos recebem quando há contenção de CPU. value é um inteiro com uma configuração padrão de 100. O intervalo permitido para value é de 1 a 100.

CAP_CPU_PERCENT = valor

Aplica-se a: SQL Server 2012 (11.x) e posterior.

Especifica um limite rígido na largura de banda da CPU que todas as solicitações no pool de recursos recebem. Limita o nível de largura de banda de CPU máxima para que ele seja igual ao valor especificado. value é um inteiro com uma configuração padrão de 100. O intervalo permitido para value é de 1 a 100.

Nota

Devido à natureza estatística da governança da CPU, você pode notar picos curtos ocasionais que excedem o valor especificado em CAP_CPU_PERCENT.

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

Aplica-se a: SQL Server 2012 (11.x) e posterior.

Anexe o pool de recursos a agendadores específicos. O valor padrão é AUTO.

Especificar <scheduler_range_spec> para AFFINITY SCHEDULER afinidades do pool de recursos com os agendadores do Mecanismo de Banco de Dados identificados pelas IDs fornecidas. Essas IDs são mapeadas para os valores na coluna scheduler_id em sys.dm_os_schedulers.

Especificar <NUMA_node_range_spec> para AFFINITY NUMANODE afinidades do pool de recursos com os agendadores do Mecanismo de Banco de Dados que são mapeados para as CPUs lógicas que correspondem ao nó NUMA fornecido ou a um intervalo de nós. Você pode usar a consulta Transact-SQL a seguir para descobrir o mapeamento entre a configuração numa física e as IDs do agendador do Mecanismo de Banco de Dados.

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

Especifica a quantidade mínima de memória do workspace de consulta reservada para o pool de recursos que não pode ser compartilhado com outros pools de recursos. value é um inteiro com uma configuração padrão de 0. O intervalo permitido para valor é de 0 a 100.

MAX_MEMORY_PERCENT = de valor

Especifica a quantidade máxima de memória do workspace de consulta que as solicitações neste pool de recursos podem usar. value é um inteiro com uma configuração padrão de 100. O intervalo permitido para value é de 1 a 100.

MIN_IOPS_PER_VOLUME = de valor

Aplica-se a: SQL Server 2014 (12.x) e posterior.

Especifica o mínimo de operações de E/S por segundo (IOPS) por volume de disco para reservar para o pool de recursos. O intervalo permitido para value é de 0 a 2^31-1 (2.147.483.647). Especifique 0 para indicar nenhum mínimo para o pool. O padrão é 0.

MAX_IOPS_PER_VOLUME = de valor

Aplica-se a: SQL Server 2014 (12.x) e posterior.

Especifica o máximo de operações de E/S por segundo (IOPS) por volume de disco para permitir para o pool de recursos. O intervalo permitido para value é de 0 a 2^31-1 (2.147.483.647). Especifique 0 para remover um limite de IOPS para o pool. O padrão é 0.

Se o MAX_IOPS_PER_VOLUME de um pool for definido como 0, o pool não será regido por E/S e poderá usar todas as IOPS no sistema mesmo que outros pools tenham MIN_IOPS_PER_VOLUME definido. Para esse caso, recomendamos que você defina o valor MAX_IOPS_PER_VOLUME para esse pool como um número alto (por exemplo, o valor máximo 2^31-1) para tornar esse pool regido por E/S e honrar as reservas de IOPS que podem existir para outros pools.

Comentários

A soma de MIN_CPU_PERCENT ou MIN_MEMORY_PERCENT para todos os pools de recursos não pode exceder 100%.

MIN_IOPS_PER_VOLUME e MAX_IOPS_PER_VOLUME especificar os EOs mínimos e máximos por segundo. Os IOs podem ser leituras ou gravações e podem ser de qualquer tamanho. Portanto, com os mesmos limites de IOPS, a taxa de transferência mínima e máxima de E/S pode variar dependendo da combinação de tamanhos de E/S na carga de trabalho.

Os valores para MAX_CPU_PERCENT e MAX_MEMORY_PERCENT devem ser maiores que ou iguais aos valores para MIN_CPU_PERCENT e MIN_MEMORY_PERCENT, respectivamente.

CAP_CPU_PERCENT difere de MAX_CPU_PERCENT no fato de as cargas de trabalho associadas com o pool poderem usar a capacidade da CPU acima do valor de MAX_CPU_PERCENT quando ela está disponível, mas não acima do valor de CAP_CPU_PERCENT. Embora possa haver picos curtos maiores que CAP_CPU_PERCENT, as cargas de trabalho não podem exceder CAP_CPU_PERCENT por longos períodos de tempo, mesmo quando há capacidade adicional de CPU disponível.

O percentual total de CPU para cada componente afinidade (agendador(s) ou nó NUMA(s)) não pode exceder 100%.

Para obter mais informações, consulte do administrador de recursos e pool de recursos do administrador de recursos.

Permissões

Requer a permissão CONTROL SERVER.

Exemplos

Para obter exemplos adicionais de configuração do administrador de recursos, consulte Exemplos de configuração do administrador de recursos e práticas recomendadas.

Criar um pool de recursos

Este exemplo criou um pool de recursos chamado bigPool. Esse pool usa as configurações de administrador de recursos padrão.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

Definir limites e reservas de CPU e memória

Este exemplo configura o pool de recursos adhocPool da seguinte maneira:

  • Reserva 10% da CPU e 5% da memória do workspace de consulta usando MIN_CPU_PERCENT e MIN_MEMORY_PERCENT respectivamente.
  • Define um limite de memória de workspace de consulta de 15% usando MAX_MEMORY_PERCENT.
  • Define um limite de CPU flexível de 20% um limite de CPU rígido de 30% usando MAX_CPU_PERCENT e CAP_CPU_PERCENT respectivamente.
  • Afinidade o pool a dois intervalos de CPUs lógicas (0 a 63 e 128 a 191) usando AFFINITY SCHEDULER.

Aplica-se a: SQL Server 2012 (11.x) e posterior.

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

Definir a reserva e o limite do IOPS

Este exemplo reserva 200 IOPS por volume para o pool usando MIN_IOPS_PER_VOLUMEe limita o IOPS por volume a 1000 usando MAX_IOPS_PER_VOLUME. Esses valores regem o total de operações físicas de leitura e gravação de E/S disponíveis para solicitações usando o pool de recursos.

Aplica-se a: SQL Server 2014 (12.x) e posterior.

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