Compartilhar via


ALTER RESOURCE POOL (Transact-SQL)

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

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

Observação

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

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 do pool de recursos default interno.

default deve estar entre colchetes ([]) ou aspas ("") quando usadas 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 o default de maiúsculas e minúsculas em servidores que usam uma ordenação que diferencia maiúsculas de minúsculas. Servidores com ordenação que não diferencia maiúsculas de minúsculas tratam default, Defaulte DEFAULT como o mesmo valor.

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

Observação

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 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 em que 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 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.

Planos armazenados em cache

Quando você altera um plano que afeta a configuração, a nova configuração entra em vigor em planos armazenados em cache anteriormente somente depois de executar DBCC FREEPROCCACHE (<pool_name>), em que <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, a execução de DBCC FREEPROCCACHE não será necessária porque planos paralelos podem ser executados no modo serial. No entanto, esse 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, não será necessário executar DBCC FREEPROCCACHE. No entanto, os planos seriais não podem ser executados em paralelo, portanto, limpar o respectivo cache permite que novos planos sejam potencialmente compilados usando paralelismo.

Aviso

Limpar 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 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:

  • 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.

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;