

# Administrador de recursos do Microsoft SQL Server com o RDS para SQL Server
<a name="Appendix.SQLServer.Options.ResourceGovernor"></a>

O administrador de recursos é um recurso do SQL Server Enterprise Edition que oferece controle preciso sobre os recursos da sua instância. Ele permite que você defina limites específicos sobre como as workloads usam CPU, memória e recursos físicos de E/S. Com o administrador de recursos, você pode:
+ Evitar a monopolização de recursos em ambientes multilocatário gerenciando como diferentes workloads compartilham recursos de instância.
+ Oferecer performance previsível definindo limites e prioridades de recursos específicos para diferentes usuários e aplicações.

Você pode habilitar o administrador de recursos em uma instância de banco de dados nova ou existente do RDS para SQL Server.

O administrador de recursos usa três conceitos fundamentais:
+ **Grupo de recursos**: um contêiner que gerencia os recursos físicos da instância (CPU, memória e E/S). Você tem dois grupos integrados (internos e padrão) e pode criar outros grupos personalizados.
+ **Grupo de workload**: um contêiner para sessões de banco de dados com características semelhantes. Cada grupo de workload pertence a um grupo de recursos. Você tem dois grupos de workload integrados (internos e padrão) e pode criar outros grupos de workload personalizados.
+ **Classificação**: o processo que determina qual grupo de workload processa as sessões de entrada com base no nome do usuário, nome da aplicação, nome do banco de dados ou nome do host.

Para acessar detalhes adicionais sobre a funcionalidade do administrador de recursos no SQL Server, consulte [Resource Governor](https://learn.microsoft.com/en-us/sql/relational-databases/resource-governor/resource-governor?view=sql-server-ver16) na documentação da Microsoft.

**Contents**
+ [Versões e regiões compatíveis](#ResourceGovernor.SupportedVersions)
+ [Limitações e recomendações](#ResourceGovernor.Limitations)
+ [Habilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server](ResourceGovernor.Enabling.md)
  + [Criar o grupo de opções para `RESOURCE_GOVERNOR`](ResourceGovernor.Enabling.md#ResourceGovernor.OptionGroup)
  + [Adicionar a opção `RESOURCE_GOVERNOR` ao grupo de opções](ResourceGovernor.Enabling.md#ResourceGovernor.Add)
  + [Associar o grupo de opções à instância de banco de dados](ResourceGovernor.Enabling.md#ResourceGovernor.Apply)
+ [Usar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server](ResourceGovernor.Using.md)
  + [Gerenciar o grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.ManageResourcePool)
    + [Criar grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.CreateResourcePool)
    + [Alterar o grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.AlterResourcePool)
    + [Eliminar o grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.DropResourcePool)
  + [Gerenciar grupos de workload](ResourceGovernor.Using.md#ResourceGovernor.ManageWorkloadGroups)
    + [Criar grupo de workload](ResourceGovernor.Using.md#ResourceGovernor.CreateWorkloadGroup)
    + [Alterar o grupo de workload](ResourceGovernor.Using.md#ResourceGovernor.AlterWorkloadGroup)
    + [Eliminar um grupo de workload](ResourceGovernor.Using.md#ResourceGovernor.DropWorkloadGroup)
  + [Criar e registrar a função classificadora](ResourceGovernor.Using.md#ResourceGovernor.ClassifierFunction)
  + [Eliminar função classificadora](ResourceGovernor.Using.md#ResourceGovernor.DropClassifier)
  + [Cancelar registro da função classificadora](ResourceGovernor.Using.md#ResourceGovernor.DeregisterClassifier)
  + [Redefinir estatísticas](ResourceGovernor.Using.md#ResourceGovernor.ResetStats)
  + [Alterações na configuração do administrador de recursos](ResourceGovernor.Using.md#ResourceGovernor.ConfigChanges)
  + [Vincular TempDB a um grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.BindTempDB)
  + [Desvincular o TempDB de um grupo de recursos](ResourceGovernor.Using.md#ResourceGovernor.UnbindTempDB)
  + [Limpar o administrador de recursos](ResourceGovernor.Using.md#ResourceGovernor.Cleanup)
+ [Considerações para implantações Multi-AZ](#ResourceGovernor.Considerations)
+ [Considerações sobre réplicas de leitura](#ResourceGovernor.ReadReplica)
+ [Monitorar o administrador de recursos do Microsoft SQL Server utilizando visualizações do sistema para sua instância do RDS para SQL Server](ResourceGovernor.Monitoring.md)
  + [Estatísticas de runtime do grupo de recursos](ResourceGovernor.Monitoring.md#ResourceGovernor.ResourcePoolStats)
+ [Desabilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server](ResourceGovernor.Disabling.md)
+ [Práticas recomendadas para configurar o administrador de recursos no RDS para SQL Server](ResourceGovernor.BestPractices.md)

## Versões e regiões compatíveis
<a name="ResourceGovernor.SupportedVersions"></a>

É possível usar o administrador de recursos com o Amazon RDS nas seguintes versões e edições do SQL Server em todas as Regiões da AWS em que o RDS para SQL Server está disponível:
+ SQL Server 2022 Developer e Enterprise Editions
+ SQL Server 2019 Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

## Limitações e recomendações
<a name="ResourceGovernor.Limitations"></a>

As seguintes limitações e recomendações se aplicam ao administrador de recursos:
+ Restrições de edição e serviço:
  + Disponível somente no SQL Server Enterprise Edition.
  + O gerenciamento de recursos é limitado ao Mecanismo de Banco de Dados do SQL Server. O administrador de recursos para Analysis Services, Integration Services e Reporting Services não é aceito.
+ Restrições da configuração:
  + É necessário usar procedimentos armazenados do Amazon RDS para todas as configurações.
  + Instruções DDL nativas e configurações de GUI do SQL Server Management Studio não são aceitas.
+ Parâmetros do grupo de recursos:
  + Nomes de grupos que comecem por `rds_` não são aceitos.
  + Modificações internas e padrão do grupo de recursos não são permitidas.
  + Para os grupos de recursos definidos pelo usuário, os seguintes parâmetros do grupo de recursos não são aceitos:
    + `MIN_MEMORY_PERCENT`
    + `MIN_CPU_PERCENT`
    + `MIN_IOPS_PER_VOLUME`
    + `AFFINITY`
+ Parâmetros do grupo de workload:
  + Nomes de grupos de workload que comecem com `rds_` não são aceitos.
  + A modificação interna do grupo de workload não é permitida.
  + Para o grupo de workload padrão:
    + Somente o parâmetro `REQUEST_MAX_MEMORY_GRANT_PERCENT` pode ser modificado.
    + Para o grupo de workload padrão, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve estar entre 1 e 70.
    + Todos os outros parâmetros ficam bloqueados e não podem ser alterados.
  + Grupos de workload definidos pelo usuário permitem a modificação de todos os parâmetros.
+ Limitações da função classificadora:
  + A função classificadora direciona as conexões para grupos de workload personalizados com base em critérios especificados (nome do usuário, banco de dados, host ou nome da aplicação).
  + Comporta até dois grupos de workload definidos pelo usuário com as respectivas condições de roteamento.
  + Combina critérios com condições `AND` dentro de cada grupo.
  + Requer pelo menos um critério de roteamento por grupo de workload.
  + Somente os métodos de classificação listados acima são aceitos.
  + O nome da função deve começar com `rg_classifier_`.
  + Atribuição de grupo padrão se nenhuma condição coincidir.

# Habilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Enabling"></a>

Habilitar o administrador de recursos adicionando a opção `RESOURCE_GOVERNOR` à sua instância de banco de dados do RDS para SQL Server. Use o seguinte processo:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `RESOURCE_GOVERNOR` ao grupo de opções.

1. Associe o grupo de opções à instância de banco de dados.

**nota**  
Habilitar o administrador de recursos por meio de um grupo de opções não requer uma reinicialização.

## Criar o grupo de opções para `RESOURCE_GOVERNOR`
<a name="ResourceGovernor.OptionGroup"></a>

Para habilitar o administrador de recursos, crie um grupo de opções ou modifique um grupo de opções que corresponda à edição do SQL Server e à versão da instância de banco de dados que você pretende usar. Para concluir esse procedimento, use o Console de gerenciamento da AWS ou a AWS CLI.

### Console
<a name="ResourceGovernor.OptionGroup.Console"></a>

Use o procedimento a seguir para criar um grupo de opções para o SQL Server Enterprise Edition 2022.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. Na janela **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **resource-governor-ee-2022**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **RESOURCE\$1GOVERNOR option group for SQL Server EE 2022**. A descrição é usada para fins de exibição.

   1. Em **Mecanismo**, selecione **sqlserver-ee**.

   1. Em **Major engine version (Versão principal do mecanismo)**, selecione **16.00**.

1. Escolha **Criar**.

### CLI
<a name="ResourceGovernor.OptionGroup.CLI"></a>

O procedimento a seguir cria um grupo de opções para o SQL Server Enterprise Edition 2022.

**Como criar o grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-option-group \
      --option-group-name resource-governor-ee-2022 \
      --engine-name sqlserver-ee \
      --major-engine-version 16.00 \
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

  Para Windows:

  ```
  aws rds create-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --engine-name sqlserver-ee ^
      --major-engine-version 16.00 ^
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

## Adicionar a opção `RESOURCE_GOVERNOR` ao grupo de opções
<a name="ResourceGovernor.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `RESOURCE_GOVERNOR` ao grupo de opções.

### Console
<a name="ResourceGovernor.Add.Console"></a>

**Como adicionar a opção RESOURCE\$1GOVERNOR**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha o grupo de opções que você acabou de criar, **resource-governor-ee-2022** neste exemplo.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Detalhes da opção**, selecione **RESOURCE\$1GOVERNOR** em **Nome da opção**.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

### CLI
<a name="ResourceGovernor.Add.CLI"></a>

**Como adicionar a opção `RESOURCE_GOVERNOR`**
+ Adicione a opção `RESOURCE_GOVERNOR` ao grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options "OptionName=RESOURCE_GOVERNOR" \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options "OptionName=RESOURCE_GOVERNOR" ^
      --apply-immediately
  ```

## Associar o grupo de opções à instância de banco de dados
<a name="ResourceGovernor.Apply"></a>

Para associar o grupo de opções `RESOURCE_GOVERNOR` à instância de banco de dados, use o Console de gerenciamento da AWS ou a AWS CLI.

### Console
<a name="ResourceGovernor.Apply.Console"></a>

Para concluir a ativação do administrador de recursos, associe o grupo de opções `RESOURCE_GOVERNOR` a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe-os ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-os modificando a instância. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="ResourceGovernor.Apply.CLI"></a>

É possível associar o grupo de opções `RESOURCE_GOVERNOR` a uma instância de banco de dados nova ou existente.

**Como criar uma instância com o grupo de opções `RESOURCE_GOVERNOR`**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mytestsqlserverresourcegovernorinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-ee \
      --engine-version 16.00 \
      --license-model license-included \
      --allocated-storage 100 \
      --master-username admin \
      --master-user-password password \
      --storage-type gp2 \
      --option-group-name resource-governor-ee-2022
  ```

  Para Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mytestsqlserverresourcegovernorinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-ee ^
      --engine-version 16.00 ^
      --license-model license-included ^
      --allocated-storage 100 ^
      --master-username admin ^
      --master-user-password password ^
      --storage-type gp2 ^
      --option-group-name resource-governor-ee-2022
  ```

**Como modificar uma instância e associar o grupo de opções `RESOURCE_GOVERNOR`**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mytestinstance \
      --option-group-name resource-governor-ee-2022 \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mytestinstance ^
      --option-group-name resource-governor-ee-2022 ^
      --apply-immediately
  ```

# Usar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Using"></a>

Depois de adicionar a opção de administrador de recursos ao seu grupo de opções, o administrador de recursos ainda não está ativo em nível de mecanismo de banco de dados. Para habilitar totalmente o administrador de recursos, você deve usar os procedimentos armazenados do RDS para SQL Server para habilitá-lo e criar os respectivos objetos necessários. Para obter mais informações, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Primeiro, conecte-se ao banco de dados do SQL Server e, depois, chame os procedimentos armazenados apropriados do RDS para SQL Server para concluir a configuração. Para obter instruções sobre como se conectar ao banco de dados, consulte [Conectar-se à instância de banco de dados do Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Para instruções sobre como chamar cada procedimento armazenado, consulte os tópicos a seguir:

**Topics**
+ [Gerenciar o grupo de recursos](#ResourceGovernor.ManageResourcePool)
+ [Gerenciar grupos de workload](#ResourceGovernor.ManageWorkloadGroups)
+ [Criar e registrar a função classificadora](#ResourceGovernor.ClassifierFunction)
+ [Eliminar função classificadora](#ResourceGovernor.DropClassifier)
+ [Cancelar registro da função classificadora](#ResourceGovernor.DeregisterClassifier)
+ [Redefinir estatísticas](#ResourceGovernor.ResetStats)
+ [Alterações na configuração do administrador de recursos](#ResourceGovernor.ConfigChanges)
+ [Vincular TempDB a um grupo de recursos](#ResourceGovernor.BindTempDB)
+ [Desvincular o TempDB de um grupo de recursos](#ResourceGovernor.UnbindTempDB)
+ [Limpar o administrador de recursos](#ResourceGovernor.Cleanup)

## Gerenciar o grupo de recursos
<a name="ResourceGovernor.ManageResourcePool"></a>

### Criar grupo de recursos
<a name="ResourceGovernor.CreateResourcePool"></a>

Depois que o administrador de recursos estiver habilitado no grupo de opções, você poderá criar grupos de recursos personalizados usando `rds_create_resource_pool`. Esses grupos permitem alocar porcentagens específicas de CPU, memória e IOPS a diferentes workloads.

**Uso**

```
USE [msdb]
EXEC dbo.rds_create_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value
```

Os seguintes parâmetros são obrigatórios:
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente.
+ `@pool_name`: é o nome definido pelo usuário para o gruo de recursos. *pool\$1name* é 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.

Os seguintes parâmetros são opcionais:
+ `@MAX_CPU_PERCENT`: especifica a largura de banda média máxima da CPU que todas as solicitações no grupo de recursos recebem quando há contenção de CPU. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@CAP_CPU_PERCENT`: especifica um limite rígido na largura de banda da CPU que todas as solicitações no grupo de recursos recebem. Limita o nível máximo de largura de banda da CPU para ser igual ao valor especificado. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_MEMORY_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que as solicitações desse grupo de recursos podem usar. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_IOPS_PER_VOLUME`: especifica o máximo de operações de E/S por segundo (IOPS) por volume de disco permitido para o grupo 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 grupo. O padrão é 0.

**Exemplos**

Exemplo de criação de um grupo de recursos com todos os valores padrão:

```
--This creates resource pool 'SalesPool' with all default values
USE [msdb]
EXEC rds_create_resource_pool @pool_name = 'SalesPool';
     
--Apply changes
USE [msdb]
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
     
--Validate configuration
select * from sys.resource_governor_resource_pools
```

Exemplo de criação de um grupo de recursos com diferentes parâmetros especificados:

```
--creates resource pool
USE [msdb]
EXEC dbo.rds_create_resource_pool    
@pool_name='analytics',
@MAX_CPU_PERCENT = 30,
@CAP_CPU_PERCENT = 40,
@MAX_MEMORY_PERCENT = 20;
            
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
    
--Validate configuration
select * from sys.resource_governor_resource_pools
```

### Alterar o grupo de recursos
<a name="ResourceGovernor.AlterResourcePool"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value;
```

Os seguintes parâmetros são obrigatórios:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário. A alteração do grupo de recursos padrão não é permitida no Amazon RDS SQL Server.

Pelo menos um dos parâmetros opcionais deve ser especificado:
+ `@MAX_CPU_PERCENT`: especifica a largura de banda média máxima da CPU que todas as solicitações no grupo de recursos recebem quando há contenção de CPU. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@CAP_CPU_PERCENT`: especifica um limite rígido na largura de banda da CPU que todas as solicitações no grupo de recursos recebem. Limita o nível máximo de largura de banda da CPU para ser igual ao valor especificado. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_MEMORY_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que as solicitações desse grupo de recursos podem usar. *valor* é um número inteiro com uma configuração padrão de 100. O intervalo permitido para *valor* é de 1 a 100.
+ `@MAX_IOPS_PER_VOLUME`: especifica o máximo de operações de E/S por segundo (IOPS) por volume de disco permitido para o grupo 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 grupo. O padrão é 0.

**Exemplos**

```
--This alters resource pool
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name='analytics',
    @MAX_CPU_PERCENT = 10,
    @CAP_CPU_PERCENT = 20,
    @MAX_MEMORY_PERCENT = 50;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration.
select * from sys.resource_governor_resource_pools
```

### Eliminar o grupo de recursos
<a name="ResourceGovernor.DropResourcePool"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name=value;
```

O seguinte parâmetro é obrigatório:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário.

**nota**  
A eliminação do grupo de recursos interno ou padrão não é permitida no SQL Server.

**Exemplos**

```
--This drops resource pool
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name='analytics'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_resource_pools
```

## Gerenciar grupos de workload
<a name="ResourceGovernor.ManageWorkloadGroups"></a>

Grupos de workload, criados e gerenciados com `rds_create_workload_group` e `rds_alter_workload_group`, permitem que você defina níveis de importância, concessões de memória e outros parâmetros para grupos de consultas.

### Criar grupo de workload
<a name="ResourceGovernor.CreateWorkloadGroup"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_create_workload_group 
@group_name = value, 
@IMPORTANCE ={ LOW | MEDIUM | HIGH }, 
@REQUEST_MAX_MEMORY_GRANT_PERCENT =value, 
@REQUEST_MAX_CPU_TIME_SEC = value , 
@REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value, 
@MAX_DOP = value, 
@GROUP_MAX_REQUESTS = value, 
@pool_name = value
```

Os seguintes parâmetros são obrigatórios:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário.
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente.

Os seguintes parâmetros são opcionais:
+ `@IMPORTANCE`: especifica a importância relativa de uma solicitação no grupo de workload. O valor padrão é `MEDIUM`.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que uma única solicitação pode ter do grupo. *valor* é uma porcentagem do tamanho do grupo de recursos definido por `MAX_MEMORY_PERCENT`. O valor padrão é 25
+ `@REQUEST_MAX_CPU_TIME_SEC`: especifica o tempo máximo de CPU, em segundos, que uma solicitação em lote pode usar. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0, o que significa ilimitado.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`: especifica o tempo máximo, em segundos, que uma consulta pode esperar até que uma concessão da memória do espaço de trabalho da consulta fique disponível. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor*, 0, usa um cálculo interno com base no custo da consulta para determinar o tempo máximo.
+ `@MAX_DOP`: especifica o grau máximo de paralelismo (`MAXDOP`) para execução paralela de consultas. O intervalo permitido para *valor* é de 0 a 64. A configuração padrão para *valor*, 0, usa a configuração global.
+ `@GROUP_MAX_REQUESTS`: especifica o número máximo de solicitações simultâneas que podem ser executadas no grupo de workload. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0 e permite solicitações ilimitadas.
+ `@pool_name`: associa o grupo de workload ao grupo de recursos definido pelo usuário identificado por *pool\$1name* ou ao grupo de recursos `default`. Se *pool\$1name* não for fornecido, o grupo de workload será associado ao grupo `default` integrado.

**Exemplos**

```
--This creates workload group named 'analytics'
USE msdb;
EXEC dbo.rds_create_workload_group 
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 25, 
    @REQUEST_MAX_CPU_TIME_SEC = 0, 
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 0, 
    @MAX_DOP = 0, 
    @GROUP_MAX_REQUESTS = 0, 
    @pool_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
  
--Validate configuration
select * from sys.resource_governor_workload_groups
```

### Alterar o grupo de workload
<a name="ResourceGovernor.AlterWorkloadGroup"></a>

**Uso**

```
EXEC msdb.dbo.rds_alter_workload_group
    @group_name = value,
    @IMPORTANCE = 'LOW|MEDIUM|HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = value,
    @REQUEST_MAX_CPU_TIME_SEC = value,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value,
    @MAX_DOP = value,
    @GROUP_MAX_REQUESTS = value,
    @pool_name = value
```

Os seguintes parâmetros são obrigatórios:
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente ou padrão.

**nota**  
Alterar somente o parâmetro `REQUEST_MAX_MEMORY_GRANT_PERCENT` no grupo de workload padrão é aceito. Para o grupo de workload padrão, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve estar entre 1 e 70. Nenhum outro parâmetro pode ser modificado no grupo de workload padrão. Todos os parâmetros podem ser modificados no grupo de workload definido pelo usuário.

Os seguintes parâmetros são opcionais:
+ `@IMPORTANCE`: especifica a importância relativa de uma solicitação no grupo de workload. O valor padrão é MEDIUM.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`: especifica a quantidade máxima de memória do espaço de trabalho de consulta que uma única solicitação pode ter do grupo. *valor* é uma porcentagem do tamanho do grupo de recursos definido por `MAX_MEMORY_PERCENT`. O valor padrão é 25 No Amazon RDS, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve estar entre 1 e 70.
+ `@REQUEST_MAX_CPU_TIME_SEC`: especifica o tempo máximo de CPU, em segundos, que uma solicitação em lote pode usar. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0, o que significa ilimitado.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`: especifica o tempo máximo, em segundos, que uma consulta pode esperar até que uma concessão da memória do espaço de trabalho da consulta fique disponível. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor*, 0, usa um cálculo interno com base no custo da consulta para determinar o tempo máximo.
+ `@MAX_DOP`: especifica o grau máximo de paralelismo (MAXDOP) para execução paralela de consultas. O intervalo permitido para *valor* é de 0 a 64. A configuração padrão para *valor*, 0, usa a configuração global.
+ `@GROUP_MAX_REQUESTS`: especifica o número máximo de solicitações simultâneas que podem ser executadas no grupo de workload. *valor* deve ser 0 ou um inteiro positivo. A configuração padrão para *valor* é 0 e permite solicitações ilimitadas.
+ `@pool_name`: associa o grupo de workload ao grupo de recursos definido pelo usuário identificado por *pool\$1name*.

**Exemplos**

Exemplo para modificar a alteração do grupo de workload padrão REQUEST\$1MAX\$1MEMORY\$1GRANT\$1PERCENT:

```
--Modify default workload group (set memory grant cap to 10%)
USE msdb
EXEC dbo.rds_alter_workload_group    
    @group_name = 'default',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT=10;
    
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
SELECT * FROM sys.resource_governor_workload_groups WHERE name='default';
```

Exemplo para modificar o grupo de workload não padrão:

```
EXEC msdb.dbo.rds_alter_workload_group    
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 30,
    @REQUEST_MAX_CPU_TIME_SEC = 3600,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 60,
    @MAX_DOP = 4,
    @GROUP_MAX_REQUESTS = 100;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

Exemplo para mover um grupo de workload não padrão para outro grupo de recursos:

```
EXEC msdb.dbo.rds_alter_workload_group    
@group_name = 'analytics',
@pool_name='abc'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

### Eliminar um grupo de workload
<a name="ResourceGovernor.DropWorkloadGroup"></a>

**Uso**

```
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = value
```

Os seguintes parâmetros são obrigatórios:
+ `@group_name`: é o nome de um grupo de workload definido pelo usuário existente.

**Exemplos**

```
--Drops a Workload Group:
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

## Criar e registrar a função classificadora
<a name="ResourceGovernor.ClassifierFunction"></a>

Esse procedimento cria uma função classificadora do administrador de recursos no banco de dados principal que direciona as conexões para grupos de workload personalizados com base em critérios especificados (nome do usuário, banco de dados, host ou nome da aplicação). Se o administrador de recursos estiver habilitado e uma função classificadora for especificada na configuração do administrador de recursos, a saída da função determinará o grupo de workload usado para novas sessões. Na ausência de uma função classificadora, todas as sessões são classificadas no grupo `default`.

**Recursos:**
+ Comporta até dois grupos de workload com as respectivas condições de roteamento.
+ Combina critérios com condições `AND` dentro de cada grupo.
+ Requer pelo menos um critério de roteamento por grupo de workload.
+ O nome da função deve começar com `rg_classifier_`.
+ Atribuição de grupo padrão se nenhuma condição coincidir.

A função classificadora tem as seguintes características e comportamentos:
+ A função é definida no escopo do servidor (no banco de dados principal).
+ A função é definida com associação de esquema.
+ A função é avaliada para cada nova sessão, mesmo quando o grupo de conexões está habilitado.
+ A função exibe o contexto do grupo de workload da sessão. A sessão é atribuída ao grupo de workload exibido pelo classificador durante a vida útil da sessão.
+ Se a função exibir NULL, padrão ou o nome de um grupo de workload inexistente, a sessão receberá o contexto padrão do grupo de workload. A sessão também receberá o contexto padrão se a função falhar por qualquer motivo.
+ É possível criar várias funções classificadoras. No entanto, o SQL Server permite que somente uma função classificadora seja registrada por vez.
+ A função classificadora não pode ser descartada, a menos que seu status de classificador seja removido usando o procedimento de cancelamento de registro (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @deregister_function = 1;`) que define o nome da função como NULL ou outra função classificadora seja registrada usando (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @classifier_function = <function_name>;`).
+ Na ausência de uma função classificadora, todas as sessões são classificadas no grupo padrão.
+ Você não pode modificar uma função classificadora enquanto ela é referida na configuração do administrador de recursos. No entanto, é possível modificar a configuração para usar uma função classificadora diferente. Se você quiser fazer alterações no classificador, pense em criar um par de funções classificadoras. Por exemplo, você pode criar `rg_classifier_a` e `rg_classifier_b`.

**Uso**

```
EXEC msdb.dbo.rds_create_classifier_function 
@function_name = value,
@workload_group1 = value, 
@user_name1 = value,
@db_name1 = value,
@host_name1 = value, 
@app_name1 = value, 
@workload_group2 = value,
@user_name2 = value,
@db_name2 = value,
@host_name2 = value,
@app_name2 = value
```

Os seguintes parâmetros são obrigatórios:
+ `@function_name`: nome da função classificadora. Deve começar com `rg_classifier_`
+ `@workload_group1`: nome do primeiro grupo de workload.

Os seguintes parâmetros são opcionais:

(Pelo menos um desses critérios deve ser especificado para o grupo 1.)
+ `@user_name1`: nome de login para o grupo 1.
+ `@db_name1`: nome do banco de dados para o grupo 1.
+ `@host_name1`: nome do host para o grupo 1.
+ `@app_name1`: nome da aplicação para o grupo 1.

(Se o grupo 2 for especificado, pelo menos, um critério deve ser fornecido.)
+ `@workload_group2`: nome do segundo grupo de workload.
+ `@user_name2`: nome de login para o grupo 2.
+ `@db_name2`: nome do banco de dados para o grupo 2.
+ `@host_name2`: nome do host para o grupo 2.
+ `@app_name2`: nome da aplicação para o grupo 2.

**nota**  
As contas do sistema, bancos de dados, aplicações e host são restritos.

**Exemplos**

Exemplo básico com um grupo de workload:

```
/*Create a classifier to route all requests from 'PowerBI' app to workload group 
'reporting_group'*/

EXEC msdb.dbo.rds_create_classifier_function
@function_name = 'rg_classifier_a',
@workload_group1 = 'reporting_group',
@app_name1 = 'PowerBI';

--Register the classifier
EXEC msdb.dbo.rds_alter_resource_governor_configuration
@classifier_function = 'rg_classifier_a';

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration

/*Query sys.resource_governor_configuration to validate that resource governor is enabled and is using the classifier function we created and registered*/

use master
go
SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name,
       OBJECT_NAME(classifier_function_id) AS classifier_object_name,
       is_enabled
FROM sys.resource_governor_configuration;
```

## Eliminar função classificadora
<a name="ResourceGovernor.DropClassifier"></a>

**Uso**

```
USE [msdb]
EXEC dbo.rds_drop_classifier_function
@function_name = value;
```

O seguinte parâmetro é obrigatório:
+ `@function_name`: é o nome de uma função classificadora existente definida pelo usuário.

**Exemplo**

```
EXEC msdb.dbo.rds_drop_classifier_function
@function_name = 'rg_classifier_b';
```

## Cancelar registro da função classificadora
<a name="ResourceGovernor.DeregisterClassifier"></a>

Use esse procedimento para cancelar o registro da função classificadora. Depois que o registro da função for cancelado, novas sessões serão automaticamente atribuídas ao grupo de workload padrão.

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration    
@deregister_function = 1;
```

Para cancelar o registro, o seguinte parâmetro é obrigatório:
+ `@deregister_function` deve ser 1.

**Exemplo**

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration 
    @deregister_function = 1;
GO

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

## Redefinir estatísticas
<a name="ResourceGovernor.ResetStats"></a>

As estatísticas do administrador de recursos são cumulativas desde a última reinicialização do servidor. Se precisar coletar estatísticas a partir de determinado momento, você poderá redefinir as estatísticas usando o procedimento armazenado do Amazon RDS a seguir.

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

Para ver as estatísticas de redefinição, o seguinte parâmetro é necessário:
+ `@reset_statistics` deve ser 1.

## Alterações na configuração do administrador de recursos
<a name="ResourceGovernor.ConfigChanges"></a>

Quando o administrador de recursos não está habilitado, `rds_alter_resource_governor_configuration` habilita o administrador de recursos. A desativação do administrador de recursos tem os seguintes resultados:
+ A função classificadora, se houver, é executada para novas sessões, atribuindo-as a grupos de workload.
+ Os limites de recursos especificados na configuração do administrador de recursos são respeitados e aplicados.
+ Os limites de recursos especificados na configuração do administrador de recursos são respeitados e aplicados.
+ As solicitações que existiam antes da ativação do administrador de recursos podem ser afetadas por quaisquer alterações de configuração feitas quando o administrador de recursos está habilitado.
+ As solicitações que existiam antes da ativação do administrador de recursos podem ser afetadas por quaisquer alterações de configuração feitas quando o administrador de recursos está habilitado.
+ No RDS para SQL Server, `EXEC msdb.dbo.rds_alter_resource_governor_configuration` deve ser executado para que qualquer alteração na configuração do administrador de recursos tenha efeito. 

**Uso**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration
```

## Vincular TempDB a um grupo de recursos
<a name="ResourceGovernor.BindTempDB"></a>

Você pode vincular metadados otimizados para memória tempdb a um grupo de recursos específico usando `rds_bind_tempdb_metadata_to_resource_pool` no Amazon RDS SQL Server versão 2019 e posterior.

**nota**  
O recurso de metadados tempdb otimizado para memória deve ser habilitado antes de vincular os metadados tempdb ao grupo de recursos. Para habilitar esse recurso no Amazon RDS, trata-se de um parâmetro estático `tempdb metadata memory-optimized`.

Habilite o parâmetro estático no Amazon RDS e realize uma reinicialização sem failover para que o parâmetro entre em vigor:

```
aws rds modify-db-parameter-group \
    --db-parameter-group-name test-sqlserver-ee-2022 \
    --parameters "ParameterName='tempdb metadata memory-optimized',ParameterValue=True,ApplyMethod=pending-reboot"
```

**Uso**

```
USE [msdb]
EXEC dbo.rds_bind_tempdb_metadata_to_resource_pool  
@pool_name=value;
```

O seguinte parâmetro é obrigatório:
+ `@pool_name`: é o nome de um grupo de recursos existente definido pelo usuário.

**nota**  
Essa alteração também exige que a reinicialização do serviço sql sem failover entre em vigor, mesmo que o recurso de metadados TempDB otimizado para memória já esteja habilitado.

## Desvincular o TempDB de um grupo de recursos
<a name="ResourceGovernor.UnbindTempDB"></a>

Desvincule metadados otimizados para memória tempdb de um grupo de recursos.

**nota**  
Essa alteração também requer a reinicialização do serviço sql sem failover para entrar em vigor.

**Uso**

```
USE [msdb]
EXEC dbo.rds_unbind_tempdb_metadata_from_resource_pool
```

## Limpar o administrador de recursos
<a name="ResourceGovernor.Cleanup"></a>

Esse procedimento é utilizado para limpar todos os objetos associados depois de remover a opção de administrador de recursos do grupo de opções. Isso desabilita o administrador de recursos, reverte o grupo de carga de workload padrão para as configurações padrão, remove grupos de workload personalizados, grupos de recursos e funções classificadoras.

**Atributos principais**
+ Reverte o grupo de workload padrão para as configurações padrão.
+ Desabilita o administrador de recursos.
+ Remove grupos de workload personalizados.
+ Remove grupos de recursos personalizados.
+ Elimina funções classificadoras.
+ Remove a vinculação do grupo de recursos tempdb, se habilitada.

**Importante**  
Essa limpeza poderá causar um erro se houver sessões ativas no grupo de workload. Aguarde o término das sessões ativas ou encerre as sessões ativas de acordo com suas necessidades comerciais. É recomendável realizar isso durante a janela de manutenção.   
Essa limpeza poderá gerar um erro se um grupo de recursos estiver vinculado ao tempdb e a reinicialização sem failover ainda não tiver ocorrido. Se você vinculou um grupo de recursos ao tempdb ou o desvinculou do tempdb anteriormente, realize a reinicialização sem failover para que a alteração seja implementada. É recomendável realizar isso durante a janela de manutenção.

**Uso**

```
USE [msdb]
EXEC dbo.rds_cleanup_resource_governor
```

## Considerações para implantações Multi-AZ
<a name="ResourceGovernor.Considerations"></a>

O RDS para SQL Server replica o administrador de recursos em uma instância secundária em uma implantação multi-AZ. Você pode verificar quando foi modificado e quando o novo administrador de recursos foi sincronizado pela última vez com a instância secundária.

Use a seguinte consulta para conferir o `last_sync_time` da replicação:

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Nos resultados da consulta, se o horário de sincronização tiver passado do horário de atualização ou criação do administrador de recursos, este será sincronizado com o secundário.

Para realizar um failover manual do banco de dados para confirmar a replicação do administrador de recursos, aguarde `last_sync_time` ser atualizado primeiro. Depois, continue com o failover multi-AZ.

## Considerações sobre réplicas de leitura
<a name="ResourceGovernor.ReadReplica"></a>
+ Para réplicas do SQL Server na mesma região da instância de banco de dados de origem, use o mesmo grupo de opções que essa instância. As alterações no grupo de opções se propagam para as réplicas imediatamente, independentemente de suas janelas de manutenção.
+ Quando você cria uma réplica entre regiões do SQL Server, o RDS cria um grupo de opções dedicado para ela.
+ Não é possível remover uma réplica entre regiões no SQL Server do seu grupo de opções dedicado. Nenhuma outra instância de banco de dados pode usar o grupo de opções dedicado para uma réplica entre regiões no SQL Server.
+ A opção de administrador de recursos é uma opção não replicada. Você pode adicionar ou remover opções não replicadas de um grupo de opções dedicado.
+ Quando você promove uma réplica de leitura entre regiões no SQL Server, a réplica promovida se comporta da mesma maneira que outras instâncias de banco de dados do SQL Server, inclusive o gerenciamento de suas opções.

**nota**  
Ao usar o administrador de recursos em uma réplica de leitura, você deve garantir manualmente que o administrador de recursos tenha sido configurado em sua réplica de leitura usando os procedimentos armazenados do Amazon RDS depois que a opção for adicionada ao grupo de opções. As configurações do administrador de recursos não são replicadas automaticamente na réplica de leitura. Além disso, a workload na réplica de leitura geralmente é diferente da instância primária. Portanto, é recomendável aplicar a configuração do recurso na réplica com base na sua workload e no tipo de instância. Você pode executar esses procedimentos armazenados do Amazon RDS na réplica de leitura de forma independente para configurar o administrador de recursos na réplica de leitura.

# Monitorar o administrador de recursos do Microsoft SQL Server utilizando visualizações do sistema para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Monitoring"></a>

As estatísticas do administrador de recursos são cumulativas desde a última reinicialização do servidor. Se precisar coletar estatísticas a partir de determinado momento, você poderá redefinir as estatísticas usando o seguinte procedimento armazenado do Amazon RDS:

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

## Estatísticas de runtime do grupo de recursos
<a name="ResourceGovernor.ResourcePoolStats"></a>

Para cada grupo de recursos, o administrador de recursos monitora a utilização da CPU e da memória, eventos de falta de memória, concessões de memória, E/S e outras estatísticas. Para acessar mais informações, consulte [sys.dm\$1resource\$1governor\$1resource\$1pools](https://learn.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-resource-governor-resource-pools-transact-sql?view=sql-server-ver17).

A consulta a seguir exibe um subconjunto das estatísticas disponíveis para todos os grupos de recursos:

```
SELECT rp.pool_id,
       rp.name AS resource_pool_name,
       wg.workload_group_count,
       rp.statistics_start_time,
       rp.total_cpu_usage_ms,
       rp.target_memory_kb,
       rp.used_memory_kb,
       rp.out_of_memory_count,
       rp.active_memgrant_count,
       rp.total_memgrant_count,
       rp.total_memgrant_timeout_count,
       rp.read_io_completed_total,
       rp.write_io_completed_total,
       rp.read_bytes_total,
       rp.write_bytes_total,
       rp.read_io_stall_total_ms,
       rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
            SELECT COUNT(1) AS workload_group_count
            FROM sys.dm_resource_governor_workload_groups AS wg
            WHERE wg.pool_id = rp.pool_id
            ) AS wg;
```

# Desabilitar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server
<a name="ResourceGovernor.Disabling"></a>

Quando você desabilita o administrador de recursos no RDS para SQL Server, o serviço para de gerenciar os recursos da workload. Antes de desabilitar o administrador de recursos, analise como isso afeta suas configurações e conexões de banco de dados.

A desativação do administrador de recursos tem os seguintes resultados:
+ A função classificadora não é executada quando uma nova conexão é aberta.
+ As novas conexões são classificadas automaticamente no grupo de workload padrão.
+ Todas as configurações existentes do grupo de workload e do grupo de recursos são redefinidas como os valores padrão.
+ Nenhum evento é acionado quando os limites são atingidos.
+ Alterações na configuração do administrador de recursos podem ser feitas, mas elas não são implementadas até que o administrador de recursos seja habilitado.

Para desabilitar o administrador de recursos, remova a opção `RESOURCE_GOVERNOR` do grupo de opções.

## Console
<a name="ResourceGovernor.Disabling.Console"></a>

O procedimento a seguir remove a opção `RESOURCE_GOVERNOR`.

**Como remover a opção RESOURCE\$1GOVERNOR do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `RESOURCE_GOVERNOR` (`resource-governor-ee-2022` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Opções de exclusão**, selecione **RESOURCE\$1GOVERNOR** em **Opções a serem excluídas**.

1. Em **Apply immediately** (Aplicar imediatamente), selecione **Yes** (Sim) para excluí-la imediatamente ou **No** (Não) para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

## CLI
<a name="ResourceGovernor.Disabling.CLI"></a>

O procedimento a seguir remove a opção `RESOURCE_GOVERNOR`.

**Como remover a opção RESOURCE\$1GOVERNOR do grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options RESOURCE_GOVERNOR \
      --apply-immediately
  ```

  Para Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options RESOURCE_GOVERNOR ^
      --apply-immediately
  ```

# Práticas recomendadas para configurar o administrador de recursos no RDS para SQL Server
<a name="ResourceGovernor.BestPractices"></a>

Para controlar o consumo de recursos, o RDS para SQL Server comporta o administrador de recursos do Microsoft SQL Server. As práticas recomendadas a seguir ajudam a evitar problemas comuns de configuração e otimizar a performance do banco de dados.

1. A configuração do administrador de recursos é armazenada no banco de dados `master`. Recomendamos que você sempre salve uma cópia dos scripts de configuração do administrador de recursos separadamente.

1. A função classificadora estende o tempo de processamento do login, portanto, é recomendável evitar uma lógica complexa no classificador. Uma função excessivamente complexa pode causar atrasos no login ou tempos limite de conexão, incluindo sessões de automação do Amazon RDS. Isso pode afetar a capacidade da automação do Amazon RDS de monitorar a integridade da instância. Portanto, é sempre recomendável testar a função classificadora em um ambiente de pré-produção antes de implementá-la em ambientes de produção.

1. Evite definir valores altos (acima de 70) para `REQUEST_MAX_MEMORY_GRANT_PERCENT` em grupos de workload, pois isso pode impedir que a instância do banco de dados aloque memória suficiente para outras consultas simultâneas, o que pode gerar erros de tempo limite de concessão de memória (Erro 8645). Por outro lado, definir esse valor muito baixo (menor que 1) ou como 0 pode impedir que consultas que precisam de espaço de trabalho de memória (como aquelas que envolvem operações de classificação ou hash) sejam executadas adequadamente em grupos de workload definidos pelo usuário. O RDS impõe esses limites restringindo os valores entre 1 e 70 nos grupos de workload padrão.

1. Para vincular tempdb ao grupo de recursos, depois de vincular metadados tempdb otimizados para memória a um grupo, o grupo pode atingir sua configuração máxima e qualquer consulta que use `tempdb` pode falhar com erros de falta de memória. Em determinadas circunstâncias, o SQL Server pode parar caso ocorra um erro de falta de memória. Para reduzir a chance de isso acontecer, defina o `MAX_MEMORY_PERCENT` do grupo de memória como um valor alto.