Usar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server - Amazon Relational Database Service

Usar o administrador de recursos do Microsoft SQL Server para sua instância do RDS para SQL Server

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.

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.

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

Gerenciar o grupo de recursos

Criar grupo de recursos

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

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

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

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

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

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_name ou ao grupo de recursos default. Se pool_name 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

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

Exemplos

Exemplo para modificar a alteração do grupo de workload padrão REQUEST_MAX_MEMORY_GRANT_PERCENT:

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

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

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

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

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

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

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

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

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

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