Isolamento de carga de trabalho do Azure Synapse Analytics

Este artigo explica como a importância da carga de trabalho pode influenciar a ordem de execução de solicitações de pools de SQL dedicados no Azure Synapse.

Importância

As necessidades comerciais podem exigir que as cargas de trabalho de data warehousing sejam mais importantes do que outras. Considere um cenário em que os dados de vendas de missão crítica são carregados antes do fechamento do período fiscal. Cargas de dados para outras fontes, como dados meteorológicos, não têm SLAs estritos. Definir a alta importância para uma solicitação para carregar dados de vendas e baixa importância para uma solicitação para carregar dados meteorológicos garante que o carregamento dos dados de vendas receba o primeiro acesso aos recursos e seja concluído mais rapidamente.

Níveis de importância

Há cinco níveis de importância: low, below_normal, normal, above_normal e high. As solicitações que não definem a importância recebem o nível padrão normal. As solicitações que têm o mesmo nível de importância têm o mesmo comportamento de agendamento que existe hoje.

Cenários de importância

Além do cenário de importância básica descrito acima com dados de vendas e meteorológicos, há outros cenários em que a importância da carga de trabalho ajuda a atender às necessidades de processamento e consulta de dados.

Bloqueio

O acesso a bloqueios para atividade de leitura e gravação é uma área de contenção natural. Atividades como troca de partição ou RENAME OBJECT exigem bloqueios elevados. Sem importância de carga de trabalho, o pool de SQL dedicado no Azure Synapse otimiza para a taxa de transferência. Otimizar para taxa de transferência significa que, quando as solicitações em execução e em fila tiverem as mesmas necessidades de bloqueio e os recursos estiverem disponíveis, as solicitações enfileiradas poderão ignorar as solicitações com maiores necessidades de bloqueio que chegaram na fila de solicitações anteriormente. Quando a importância da carga de trabalho é aplicada a solicitações com mais necessidades de bloqueio. As consultas com importância mais alta serão executadas antes das queries com importância mais baixa.

Considere o seguinte exemplo:

  • Q1 está executando ativamente e selecionando dados de SalesFact.
  • Q2 está na fila aguardando a conclusão de Q1. Ele foi enviado às 9h e está tentando particionar novos dados no SalesFact.
  • Q3 é enviado às 9:01 e deseja selecionar dados de SalesFact.

Se Q2 e Q3 tiverem a mesma importância e Q1 ainda estiver em execução, Q3 começará a ser executado. Q2 continuará aguardando um bloqueio exclusivo em SalesFact. Se Q2 tiver uma importância maior do que o Q3, o Q3 aguardará até que o Q2 seja concluído antes de poder iniciar a execução.

Solicitações não uniformes

Outro cenário em que a importância pode ajudar a atender às demandas de consulta é quando solicitações com classes de recursos diferentes são enviadas. Como foi mencionado anteriormente, sob a mesma importância, o pool de SQL dedicado no Azure Synapse otimiza para a taxa de transferência. Quando solicitações de tamanho misto (como smallrc ou mediumrc) são enfileiradas, o pool de SQL dedicado escolherá a primeira solicitação de chegada que corresponde aos recursos disponíveis. Se a importância da carga de trabalho for aplicada, a solicitação de maior importância será agendada a seguir.

Considere o seguinte exemplo em DW500c:

  • Q1, Q2, Q3 e Q4 estão executando consultas smallrc.
  • Q5 é enviado com a classe de recurso mediumrc às 9h.
  • Q6 é enviado com a classe de recurso smallrc às 9:01.

Como Q5 é mediumrc, ele requer dois slots de simultaneidade. Q5 precisa aguardar a conclusão de duas consultas em execução. No entanto, quando uma das consultas em execução (Q1-Q4) for concluída, o Q6 será agendado imediatamente porque os recursos existem para executar a consulta. Se Q5 tiver maior importância do que Q6, Q6 aguardará até que Q5 esteja em execução antes que possa começar a execução.

Próximas etapas