Conceitos do Administrador de Recursos

Os três conceitos a seguir são fundamentais para compreensão e uso do Administrador de Recursos:

  • Pools de recursos. Dois pools de recursos (interno e padrão) são criados quando o SQL Server 2008 é instalado. O Administrador de Recursos também oferece suporte a pools de recursos definidos pelo usuário.

  • Grupos de carga de trabalho. Dois grupos de carga de trabalho (interno e padrão) são criados e mapeados para os correspondentes pools de recursos quando o SQL Server 2008 é instalado. O Administrador de Recursos também oferece suporte a grupos de carga de trabalho definidos pelo usuário.

  • Classificação. Há regras internas que classificam as solicitações de entrada e as direcionam para um grupo de carga de trabalho. O Administrador de Recursos também oferece suporte à função de classificação definida pelo usuário para implementar as regras de classificação.

ObservaçãoObservação

O Administrador de Recursos não impõe nenhum controle em uma conexão de administrador dedicada (DAC). Não é necessário classificar as consultas de DAC que executam no grupo de carga de trabalho interno e no pool de recursos.

No contexto do Administrador de Recursos, é possível tratar os conceitos anteriores como componentes. A ilustração a seguir mostra esses componentes e suas relações conforme surgem no ambiente do mecanismo de banco de dados. Do ponto de vista do processamento, o fluxo simplificado é o seguinte:

  • Há uma conexão de entrada para uma sessão (Sessão 1 de n).

  • A sessão é classificada (Classificação).

  • A carga de trabalho de sessão é roteada para um grupo de carga de trabalho, por exemplo, Grupo 4.

  • O grupo de carga de trabalho usa o pool de recursos ao qual está associado, por exemplo, Pool 2.

  • O pool de recursos fornece e limita os recursos requeridos pelo aplicativo, por exemplo, Aplicativo 3.

Componentes funcionais do Administrador de Recursos

Pools de recursos

O pool de recursos ou pool representa os recursos físicos do servidor. É possível pensar no pool como uma instância virtual do SQL Server dentro de uma instância do SQL Server.

Um pool tem duas partes. Uma parte não sobrepõe outros pools, o que permite reserva mínima de recursos. A outra parte é compartilhada com outros pools, fornecendo suporte ao consumo máximo possível de recursos. Nesta versão do Administrador de Recursos, para definir os recursos do pool, especifique um dos valores a seguir para cada recurso:

  • MIN ou MAX para CPU

  • MIN ou MAX para memória

MIN e MAX representam a disponibilidade mínima garantida de recursos do pool e o tamanho máximo do pool, respectivamente, para cada um desses recursos.

A soma dos valores MIN de todos os pools não pode ultrapassar 100% dos recursos do servidor. O valor MAX pode ser definido como qualquer valor do intervalo entre MIN e 100%, inclusive.

Se um pool tiver MIN diferente de zero definido, o valor MAX efetivo de outros pools será reajustado de acordo com o mínimo do valor MAX configurado de um pool e a soma dos valores MIN de outros pools subtraído de 100%.

A tabela a seguir ilustra os conceitos anteriores. A tabela mostra as configurações para o pool interno, para o pool padrão e para dois pools definidos pelo usuário. As fórmulas a seguir são usadas para calcular effective MAX% e shared %.

  • Min(X,Y) significa o menor valor de X e Y.

  • Sum(X) significa a soma do valor X de todos os pools.

  • Total shared % = 100 - sum(MIN %).

  • Effective MAX % = min(X,Y).

  • Shared % = Effective MAX % - MIN %.

Nome do pool

Configuração de MIN %

Configuração de MAX %

Effective MAX % calculado

Shared % calculado

Comentário

interno

0

100

100

0

Effective MAX% e shared% não podem ser aplicados ao pool interno.

padrão

0

100

30

30

O valor MAX efetivo é calculado como: min(100,100-(20+50)) = 30. shared % calculado é MAX - MIN = 30.

Pool 1

20

100

50

30

O valor effective MAX é calculado como: min(100,100-50) = 50. Shared % calculado é Effective MAX - MIN = 30.

Pool 2

50

70

70

20

O valor effective MAX é calculado como: min(70,100-20) = 70. Shared % calculado é Effective MAX - MIN = 20.

Usando a tabela anterior como exemplo, podemos ilustrar mais tarde os ajustes que são feitos quando outro pool é criado. Esse é o Pool 3 e tem o valor 5 de configuração de MIN %.

Nome do pool

Configuração de MIN %

Configuração de MAX %

Effective MAX % calculado

Shared % calculado

Comentário

interno

0

100

100

0

Effective MAX % e shared % não podem ser aplicados ao pool interno.

padrão

0

100

25

25

O valor effective MAX é calculado como: min(100,100-(20+50+5)) = 25. shared % calculado é Effective MAX - MIN = 25.

Pool 1

20

100

45

25

O valor effective MAX é calculado como: min(100,100-55) = 45. O Shared % calculado é Effective MAX - MIN = 25.

Pool 2

50

70

70

20

O valor effective MAX é calculado como: min(70,100-25) = 70. Shared % calculado é effective MAX - MIN = 20.

Pool 3

5

100

30

25

O valor effective MAX é calculado como: min(100,100-70) = 30. Shared % calculado é effective MAX - MIN = 25.

A parte compartilhada do pool é usada para indicar aonde os recursos disponíveis podem ir se os recursos estão disponíveis. Porém, quando os recursos são consumidos, eles vão para o pool especificado e não são compartilhados. Isso pode melhorar a utilização dos recursos nos casos em que não há solicitações em um determinado pool, e os recursos configurados para o pool podem ser liberados para outros pools.

Estes são alguns casos extremos de configuração de pool:

  • Todos os pools definem mínimos que, totalizados, representam 100% dos recursos do servidor. Nesse caso, os máximos efetivos são iguais aos mínimos. Isso equivale a dividir os recursos do servidor em partes que não se sobrepõem, independentemente de os recursos serem consumidos em cada pool específico.

  • Todos os pools têm mínimo com valor zero. Todos os pools disputam os recursos disponíveis e seus tamanhos finais baseiam-se no consumo de recurso em cada pool. Outros fatores, como políticas, desempenham uma função na formação do tamanho final do pool.

O Administrador de Recursos define previamente dois pools de recursos, o interno e o padrão.

Pool interno

O pool interno representa os recursos consumidos pelo próprio SQL Server. Esse pool sempre contém apenas o grupo interno, e o pool não pode ser alterado de forma nenhuma. O consumo de recursos pelo pool interno não é restrito. Todas as cargas de trabalho no pool são consideradas críticas para a função do servidor e o Administrador de Recursos permite que o pool interno pressione os outros pools, mesmo se isso significar violação dos limites definidos para os outros pools.

ObservaçãoObservação

O uso de recursos do pool interno e do grupo interno não é subtraído do uso de recursos total. As porcentagens são calculadas com base nos recursos totais disponíveis.

Pool padrão

O pool padrão é o primeiro pool definido previamente pelo usuário. Antes de qualquer configuração, o pool padrão só contém o grupo padrão. O pool padrão não pode ser criado ou descartado, mas pode ser alterado. O pool padrão pode conter grupos definidos pelo usuário além do grupo padrão.

ObservaçãoObservação

O grupo padrão pode ser alterado, mas não pode ser se movido do pool padrão.

Pools de recursos definidos pelo usuário

O Administrador de Recursos fornece instruções DDL para criar, alterar e descartar pools de recursos. Para obter mais informações, consulte DDL do administrador de recursos e exibições do sistema.

Grupos de carga de trabalho

O grupo de carga de trabalho funciona como um contêiner para as solicitações de sessão similares, de acordo com os critérios de classificação aplicados a cada solicitação. O grupo de carga de trabalho permite o monitoramento agregado do consumo de recursos e o aplicativo de uma política uniforme para todas as solicitações no grupo. Um grupo define as políticas para seus membros.

ObservaçãoObservação

Os grupos de carga de trabalho definidos pelo usuário podem ser movidos de um pool de recursos para outro.

O Administrador de Recursos predefine dois grupos de carga de trabalho: o grupo interno e o padrão. Um usuário não pode alterar nada que esteja classificado como grupo interno, mas pode fazer o monitoramento. As solicitações são classificadas no grupo padrão quando existem as seguintes condições:

  • Não há nenhum critério para classificar uma solicitação.

  • Há uma tentativa de classificar a solicitação em um grupo inexistente.

  • Há uma falha de classificação geral.

O Administrador de Recursos também fornece instruções DDL para criar, alterar e descartar grupos de carga de trabalho. Para obter mais informações, consulte DDL do administrador de recursos e exibições do sistema.

Classificação

O Administrador de Recursos oferece suporte à classificação de sessões de entrada. A classificação baseia-se em um conjunto de critérios gravados pelo usuário contido em uma função. Os resultados da lógica de função permitem que o Administrador de Recursos classifique as sessões em grupos de carga de trabalho existentes.

ObservaçãoObservação

O grupo de carga de trabalho interno é populado com solicitações que são apenas para uso interno. Você não pode alterar os critérios usados para direcionar essas solicitações nem classificar as solicitações no grupo de carga de trabalho interno.

É possível gravar uma função escalar contendo a lógica que é usada para atribuir sessões de entrada a um grupo de carga de trabalho. Para que você possa usar essa função, é necessário concluir as seguintes ações:

  • Crie e registre a função usando a instrução ALTER RESOURCE GOVERNOR. Para obter mais informações, consulte ALTER RESOURCE GOVERNOR (Transact-SQL).

  • Atualize a configuração do Administrador de Recursos usando a instrução ALTER RESOURCE GOVERNOR com o parâmetro RECONFIGURE.

Depois que você criar a função e aplicar as alterações de configuração, o classificador do Administrador de Recursos usará o nome do grupo de carga de trabalho retornado pela função para enviar uma nova solicitação ao grupo de carga de trabalho adequado.

Observação importanteImportante

A sessão do cliente pode expirar caso a função de classificação não seja concluída dentro do tempo limite especificado para o logon. Tempo limite de logon é uma propriedade do cliente e, como tal, o servidor desconhece o tempo limite. Uma função de classificação com execução longa pode deixar o servidor com conexões órfãs por períodos longos. É importante que se criem funções de classificação que terminem de executar antes do tempo limite de conexão.

A função definida pelo usuário tem as seguintes características e comportamentos:

  • A função definida pelo usuário é avaliada para cada sessão nova, mesmo quando o pooling de conexões está habilitado.

  • A função definida pelo usuário fornece contexto de grupo de carga de trabalho para a sessão. Depois que a associação em grupo é determinada, a sessão é associada ao grupo de carga de trabalho durante o tempo de vida da sessão.

  • Se a função definida pelo usuário retornar NULL, padrão ou o nome de um grupo inexistente, o contexto de grupo de carga de trabalho padrão será dado à sessão. O contexto padrão também será dado à sessão caso a função falhe por qualquer motivo.

  • A função deve ser definida com escopo do servidor (banco de dados mestre).

  • A designação de função de classificação definida pelo usuário só entrará em vigor depois que ALTER RESOURCE GOVERNOR RECONFIGURE for executada.

  • Só uma função definida pelo usuário pode ser designada como classificação por vez.

  • A função de classificação definida pelo usuário não pode ser descartada ou alterada a menos que seu estado de classificação seja removido.

  • Na ausência de uma função de classificação definida pelo usuário, todas as sessões são classificadas no grupo padrão.

  • O grupo de carga de trabalho retornado pela função de classificação está fora do escopo da restrição de associação de esquema. Por exemplo, você não pode descartar uma tabela, mas pode descartar um grupo de cargas de trabalho.

Observação importanteImportante

É recomendável habilitar a conexão de administrador dedicada (DAC) no servidor. A DAC não está sujeita à classificação do Administrador de Recursos e pode ser usada para monitorar e solucionar problemas de uma função de classificação. Para obter mais informações, consulte Usando uma conexão de administrador dedicada [SQL Server]. Se uma DAC não estiver disponível para a solução de problemas, a outra opção é reiniciar o sistema no modo de usuário único. Embora o modo de usuário único não esteja sujeito a classificação, ele não oferece a você a capacidade de diagnosticar a classificação do Administrador de Recursos enquanto está em execução.

Processo de classificação

No contexto do Administrador de Recursos, o processo de logon para uma sessão consiste nas seguintes etapas:

  1. Autenticação de logon

  2. Execução de gatilhos LOGON

  3. Classificação

Quando a classificação é iniciada, o Administrador de Recursos executa a função de classificação e usa o valor retornado pela função para enviar solicitações ao grupo de cargas de trabalho apropriado. Para obter mais informações, consulte Considerações sobre como escrever uma função de classificação.

ObservaçãoObservação

As informações sobre a execução da função de classificação e dos gatilhos LOGON é exposta em sys.dm_exec_sessions e sys.dm_exec_requests.