Partilhar via


ALTERAR POOL DE RECURSOS (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Altera uma configuração existente do administrador de recursos pool de recursos para uma instância do Mecanismo de Banco de Dados.

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

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 | [padrão] }

É o nome de um pool de recursos definido pelo usuário existente ou o pool de recursos default interno.

default deve estar entre parênteses ([]) ou aspas ("") quando usado com ALTER RESOURCE POOL para evitar um conflito com DEFAULT, que é uma palavra reservada do sistema. Para obter mais informações, consulte Identificadores de banco de dados.

Pools de recursos internos e grupos de carga de trabalho usam todos os nomes minúsculos, como default. Use a default minúscula em servidores que usam um agrupamento que diferencia maiúsculas de minúsculas. Os servidores com agrupamento que não diferencia maiúsculas de minúsculas tratam default, Defaulte DEFAULT como o mesmo valor.

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.

Planos armazenados em cache

Quando você altera um plano que afeta a configuração, a nova configuração entra em vigor em planos armazenados anteriormente em cache somente depois de executar DBCC FREEPROCCACHE (<pool_name>), onde <pool_name> é o nome de um pool de recursos do administrador de recursos.

  • Se você estiver alterando AFFINITY de vários agendadores para um único agendador, executar DBCC FREEPROCCACHE não é necessário porque os planos paralelos podem ser executados no modo serial. No entanto, tal plano pode ser menos eficiente do que um plano compilado como um plano serial.
  • Se você estiver alterando AFFINITY de um único agendador para vários agendadores, executar DBCC FREEPROCCACHE não será necessário. No entanto, os planos seriais não podem ser executados em paralelo, portanto, limpar o respetivo cache permite que novos planos sejam potencialmente compilados usando paralelismo.

Advertência

A limpeza de planos armazenados em cache de um pool de recursos associado a mais de um grupo de carga de trabalho afeta todos os grupos de carga de trabalho usando o pool de recursos definido pelo usuário identificado por <pool_name>.

Permissões

Requer a permissão de CONTROL SERVER.

Exemplos

O exemplo a seguir mantém todas as configurações atuais do pool de recursos para o pool de default, exceto para MAX_CPU_PERCENT, que é alterado para 25%.

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

ALTER RESOURCE GOVERNOR RECONFIGURE;

O exemplo a seguir modifica 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.

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;