Partilhar via


CRIAR POOL DE RECURSOS (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Cria um administrador de recursos pool 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 reservar ou limitar recursos do 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 suportados pelas edições do SQL Server, consulte edições e recursos com suporte do SQL Server 2022.

Observação

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

Transact-SQL convenções de sintaxe

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 = valor

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

MAX_CPU_PERCENT = 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. valor é um inteiro com uma configuração padrão de 100. O intervalo permitido para valor é 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 máximo de largura de banda da CPU a ser o mesmo que o valor especificado. valor é um inteiro com uma configuração padrão de 100. O intervalo permitido para valor é de 1 a 100.

Observação

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

AFFINIDADE {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.

A especificação de <scheduler_range_spec> para AFFINITY SCHEDULER afilia o pool de recursos aos agendadores do Mecanismo de Banco de Dados identificados pelas IDs fornecidas. Esses IDs são mapeados para os valores na coluna scheduler_id no sys.dm_os_schedulers.

A especificação de <NUMA_node_range_spec> para AFFINITY NUMANODE afilia o pool de recursos aos agendadores do Mecanismo de Banco de Dados que mapeiam para as CPUs lógicas que correspondem a determinado nó NUMA ou a um intervalo de nós. Você pode usar a seguinte consulta Transact-SQL para descobrir o mapeamento entre a configuração física do NUMA e os 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 = valor

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

MAX_MEMORY_PERCENT = valor

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

MIN_IOPS_PER_VOLUME = 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 a ser reservado para o pool de recursos. O intervalo permitido para valor é de 0 a 2^31-1 (2.147.483.647). Especifique 0 para indicar que não há mínimo para o pool. O padrão é 0.

MAX_IOPS_PER_VOLUME = 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 o pool de recursos. O intervalo permitido para valor é 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 estiver definido como 0, o pool não será controlado por E/S e poderá receber todas as IOPS do sistema, mesmo que outros pools tenham MIN_IOPS_PER_VOLUME definidos. Nesse caso, recomendamos que você defina o valor de 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 controlado por IO e honrar as reservas de IOPS que possam 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 o mínimo e o máximo de OI por segundo. Os IOs podem ser lidos ou gravados 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 de MAX_CPU_PERCENT e MAX_MEMORY_PERCENT devem ser maiores ou iguais aos valores de MIN_CPU_PERCENT e MIN_MEMORY_PERCENT, respectivamente.

CAP_CPU_PERCENT difere de MAX_CPU_PERCENT porque as cargas de trabalho associadas ao pool podem usar a capacidade da CPU acima do valor de MAX_CPU_PERCENT se estiver disponível, mas não acima do valor de CAP_CPU_PERCENT. Embora possa haver picos curtos superiores a CAP_CPU_PERCENT, as cargas de trabalho não podem exceder CAP_CPU_PERCENT por longos períodos de tempo, mesmo quando a capacidade adicional da CPU está disponível.

A porcentagem total de CPU para cada componente afinitizado (agendador(es) ou nó(s) 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 de 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 padrão do administrador de recursos.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

Definir reservas e limites de CPU e memória

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

  • Reservas 10% da CPU e 5% da memória do espaço de trabalho de consulta usando MIN_CPU_PERCENT e MIN_MEMORY_PERCENT respectivamente.
  • Define um limite de memória do espaço de trabalho de consulta de 15% usando MAX_MEMORY_PERCENT.
  • Define um limite de CPU flexível de 20% e um limite de CPU de 30% usando MAX_CPU_PERCENT e CAP_CPU_PERCENT respectivamente.
  • Afinitiza o pool para 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 reserva e limite de 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 governam o total de operações físicas de leitura e gravação de E/S disponíveis para solicitações que usam 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
     );