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:
Tópicos
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 paravaloré 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 paravaloré 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 paravaloré 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 paravaloré 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 paravaloré 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 paravaloré 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 paravaloré 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 paravaloré 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 porMAX_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.valordeve ser 0 ou um inteiro positivo. A configuração padrão paravaloré 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.valordeve ser 0 ou um inteiro positivo. A configuração padrão paravalor, 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 paravaloré de 0 a 64. A configuração padrão paravalor, 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.valordeve ser 0 ou um inteiro positivo. A configuração padrão paravaloré 0 e permite solicitações ilimitadas. -
@pool_name: associa o grupo de workload ao grupo de recursos definido pelo usuário identificado porpool_nameou ao grupo de recursosdefault. Sepool_namenão for fornecido, o grupo de workload será associado ao grupodefaultintegrado.
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 porMAX_MEMORY_PERCENT. O valor padrão é 25 No Amazon RDS,REQUEST_MAX_MEMORY_GRANT_PERCENTdeve 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.valordeve ser 0 ou um inteiro positivo. A configuração padrão paravaloré 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.valordeve ser 0 ou um inteiro positivo. A configuração padrão paravalor, 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 paravaloré de 0 a 64. A configuração padrão paravalor, 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.valordeve ser 0 ou um inteiro positivo. A configuração padrão paravaloré 0 e permite solicitações ilimitadas. -
@pool_name: associa o grupo de workload ao grupo de recursos definido pelo usuário identificado porpool_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
ANDdentro 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_aerg_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 comrg_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_functiondeve 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_statisticsdeve 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_configurationdeve 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