Gerenciamento de carga de trabalho no Analytics Platform System
Os recursos de gerenciamento de carga de trabalho do PDW do SQL Server permitem que usuários e administradores atribuam solicitações a configurações de memória e simultaneidade predefinidas. Use o gerenciamento de carga de trabalho para melhorar o desempenho, seja ela consistente ou mista, permitindo que as solicitações tenham os recursos apropriados sem privar nenhuma solicitação indefinidamente.
Por exemplo, com as técnicas de gerenciamento de carga de trabalho no SQL Server PDW, você pode:
Aloque um grande número de recursos para um trabalho de carga.
Especifique mais recursos para a criação de um índice columnstore.
Solucione os problemas de uma junção de hash com desempenho lento para ver se ela precisa de mais memória e, em caso afirmativo, aumente a memória disponível.
Noções básicas de gerenciamento de carga de trabalho
Termos-chave
Gerenciamento de carga de trabalho
Gerenciamento de Carga de Trabalho é a capacidade de entender e ajustar a utilização de recursos do sistema para obter o melhor desempenho para solicitações simultâneas.
Classe de recurso
No SQL Server PDW, uma classe de recurso é uma função de servidor interna que tem limites pré-atribuídos para memória e simultaneidade. O SQL Server PDW aloca recursos para as solicitações de acordo com a associação da função de servidor da classe de recursos do logon que envia as solicitações.
Nos nós de computação, a implementação de classes de recursos usa o recurso Governador de Recursos no SQL Server. Para obter mais informações sobre o Resource Governor, consulte Resource Governor no MSDN.
Entender a utilização de recursos atuais
Para entender a utilização de recursos do sistema para as solicitações em execução no momento, use as exibições de gerenciamento dinâmico PDW do SQL Server. Por exemplo, você pode usar DMVs para entender se uma junção de hash grande de execução lenta pode se beneficiar de ter mais memória.
Ajustar alocações de recursos
Para ajustar a utilização de recursos, altere a associação da classe de recurso do logon que está enviando a solicitação. As funções de servidor da classe de recursos são chamadas de mediumrc, largerc e xlargerc. Elas representam alocações de recursos médias, grandes e extra grandes, respectivamente.
Por exemplo, para alocar uma grande quantidade de recursos do sistema a uma solicitação, adicione o logon que está enviando a solicitação para a função de servidor largerc. A instrução ALTER SERVER ROLE a seguir adiciona o logon Anna à função de servidor largerc.
ALTER SERVER ROLE largerc ADD MEMBER Anna;
Descrições de classe de recurso
A tabela a seguir descreve as classes de recursos e suas alocações de recursos do sistema.
Classe de recurso | Importância da solicitação | Uso máximo de memória* | Slots de simultaneidade (máximo = 32) | Descrição |
---|---|---|---|---|
inadimplência | Médio | 400 MB | 1 | Por padrão, cada logon tem permissão para uma pequena quantidade de memória e recursos de simultaneidade para suas solicitações. Quando um logon é adicionado a uma classe de recurso, a nova classe tem precedência. Quando um logon é removido de todas as classes de recursos, o logon volta para a alocação de recursos padrão. |
MediumRC | Média | 1200 MB | 3 | Exemplos de solicitações que podem precisar da classe de recurso média: Operações de CTAS que têm grandes junções de hash. Operações SELECT que precisam de mais memória para evitar o cache no disco. Carregar dados em índices columnstore clusterizados. Compilar, recompilar e reorganizar índices columnstore clusterizados para tabelas menores que tenham de 10 a 15 colunas. |
Largerc | Alta | 2,8 GB | 7 | Exemplos de solicitações que podem precisar da classe de recurso grande: Operações CTAS de grande porte que têm enormes junções de hash ou contêm grandes agregações, como cláusulas ORDER BY ou GROUP BY grandes. Operações SELECT que exigem quantidades muito grandes de memória para operações como junções ou agregações de hash, como cláusulas ORDER BY ou GROUP BY Carregar dados em índices columnstore clusterizados. Compilar, recompilar e reorganizar índices columnstore clusterizados para tabelas menores que tenham de 10 a 15 colunas. |
xlargerc | Alta | 8,4 GB | 22 | A classe de recurso extra grande é para solicitações que podem exigir um consumo extra grande de recursos em tempo de execução. |
*O uso máximo de memória é uma aproximação.
Importância da solicitação
A importância da solicitação corresponde à quantidade de tempo de CPU que o SQL Server, operando nos nós de computação, dedicará às solicitações. As solicitações com prioridade mais alta recebem mais tempo de CPU.
Uso máximo de memória
O uso máximo de memória é a quantidade máxima de memória disponível que uma solicitação pode usar em cada espaço de processamento. Por exemplo, uma solicitação mediumrc pode usar até 1200 MB para processamento em cada distribuição. Ainda é importante garantir que os dados não sejam distorcidos para evitar que algumas distribuições executem a maior parte do trabalho.
Slots de simultaneidade
A meta de alocar slots de simultaneidade 1, 3, 7 e 22 é permitir que processos grandes e pequenos sejam executados ao mesmo tempo, sem bloquear um pequeno processo quando um processo grande estiver em execução. Por exemplo, o SQL Server PDW pode alocar no máximo 32 slots de simultaneidade para executar 1 solicitação extra grande (22 slots), 1 solicitação grande (7 slots) e 1 solicitação média (3 slots) ao mesmo tempo.
Exemplos de alocação de até 32 slots de simultaneidade a solicitações simultâneas:
28 slots = 4 grandes
30 slots = 10 médios
32 slots = 32 padrão
32 slots = 1 extra grande + 1 grande + 1 médio
32 slots = 2 grandes + 4 médios + 6 padrão
Suponha que seis solicitações grandes sejam enviadas para o SQL Server PDW e, em seguida, 10 solicitações padrão sejam enviadas. O PDW do SQL Server processará as solicitações na ordem de prioridade da seguinte maneira:
Aloque 28 slots de simultaneidade para iniciar o processamento de 4 solicitações grandes à medida que a memória estiver disponível e mantenha 2 solicitações grandes na fila.
Aloque 4 slots de simultaneidade para iniciar o processamento de 4 solicitações padrão e manter 6 solicitações padrão na fila de espera.
À medida que as solicitações são concluídas e os slots de simultaneidade ficam disponíveis, o SQL Server PDW alocará as solicitações restantes de acordo com os recursos disponíveis e a prioridade. Por exemplo, quando houver sete slots de simultaneidade abertos, aguardar solicitações grandes terá prioridade maior para os sete slots do que aguardar solicitações médias. Se 6 slots forem abertos, o SQL Server PDW alocará mais 6 solicitações de tamanho padrão. No entanto, os slots de memória e simultaneidade devem estar todos disponíveis antes que o SQL Server PDW permita a execução de uma solicitação.
Em cada classe de recurso, as solicitações são executadas na ordem PEPS (primeiro a entrar, primeiro a sair).
Comentários Gerais
A classe com mais recursos terá precedência se um logon for membro de mais de uma classe de recurso.
Quando um logon é adicionado ou removido de uma classe de recurso, a alteração entra em vigor imediatamente para todas as solicitações futuras; as solicitações atuais que estão em execução ou aguardando não são afetadas. O logon não precisa se desconectar e se reconectar para que a alteração ocorra.
Para cada logon, as configurações de classe de recurso são aplicadas a instruções e operações individuais, e não à sessão.
Antes que o SQL Server PDW execute uma instrução, ele tenta adquirir os slots de simultaneidade necessários para a solicitação. Se ele não puder adquirir slots de simultaneidade suficientes, o SQL Server PDW moverá a solicitação para um estado waiting-to-be-executed, ou aguardando execução. Todos os recursos que já foram alocados para a solicitação são retornados de volta ao sistema.
A maioria das instruções SQL sempre precisa das alocações de recursos padrão e, portanto, não são controladas por classes de recursos. Por exemplo, CREATE LOGIN só precisa de uma pequena quantidade de recursos e são alocados os recursos padrão mesmo que o login chamando CREATE LOGIN seja membro de uma classe de recurso. Por exemplo, se Anna for um membro da classe de recurso largerc e enviar uma instrução CREATE LOGIN, a instrução CREATE LOGIN será executada com o número padrão de recursos.
Instruções SQL e operações regidas por classes de recursos:
ALTER INDEX REBUILD
ALTER INDEX REORGANIZE
ALTER TABLE REBUILD
CRIAR ÍNDICE CLUSTERIZADO
CREATE CLUSTERED COLUMNSTORE INDEX
CREATE TABLE AS SELECT
CREATE REMOTE TABLE AS SELECT
Carregar dados com dwloader.
INSERT-SELECT
ATUALIZAÇÃO
DELETE
RESTORE DATABASE ao restaurar em um dispositivo com mais nós de computação.
SELECT, excluindo as consultas somente DMV
Limitações e restrições
As classes de recursos regem as alocações de memória e simultaneidade. Eles não regem as operações de entrada/saída.
Metadados
DMVs que contêm informações sobre classes de recursos e membros das classes de recurso.
DMVs que contêm informações sobre o estado das solicitações e os recursos de que elas precisam:
Vistas relacionadas do sistema expostas nas DMVs do SQL Server nos nós de computação. Confira Exibições de gerenciamento dinâmico do SQL Server para links dessas DMVs no MSDN.
sys.dm_pdw_nodes_resource_governor_resource_pools
sys.dm_pdw_nodes_resource_governor_workload_groups
sys.dm_pdw_nodes_resource_governor_resource_pools
sys.dm_pdw_nodws_resource_governor_workload_groups
sys.dm_pdw_nodes_exec_sessions
sys.dm_pdw_nodes_exec_requests
sys.dm_pdw_nodes_exec_query_memory_grants
sys.dm_pdw_nodes_exec_query_resource_semaphores
sys.dm_pdw_nodes_os_memory_brokers
sys.dm_pdw_nodes_os_memory_cache_entries
sys.dm_pdw_nodes_exec_cached_plans