Partilhar via


Importância da 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 pool SQL dedicadas no Azure Synapse.

Importância

As necessidades de negócios podem exigir que as cargas de trabalho de armazenamento de dados 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 encerramento do período fiscal. As cargas de dados para outras fontes, como dados meteorológicos, não têm SLAs rigorosos. Definir 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 a carga de dados de vendas tenha primeiro acesso aos recursos e seja concluída mais rapidamente.

Níveis de importância

Existem cinco níveis de importância: baixo, abaixo do normal, normal, acima do normal e alto. As solicitações que não definem importância recebem o nível padrão de 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, existem 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 fechaduras para atividades de leitura e escrita é uma área de discórdia natural. Atividades como comutação de partições ou RENAME OBJECT requerem bloqueios elevados. Sem importância de carga de trabalho, o pool SQL dedicado no Azure Synapse otimiza a taxa de transferência. A otimização da taxa de transferência significa que, quando as solicitações em execução e enfileiradas têm as mesmas necessidades de bloqueio e os recursos estão disponíveis, as solicitações enfileiradas podem ignorar solicitações com necessidades de bloqueio mais altas que chegaram à fila de solicitações anteriormente. Quando a importância da carga de trabalho é atribuída a solicitações com maior necessidade de bloqueio. Solicitação com maior importância será executada antes da solicitação com menor importância.

Considere o seguinte exemplo:

  • O Q1 está executando e selecionando ativamente os dados do SalesFact.
  • O Q2 está na fila aguardando a conclusão do Q1. Ele foi enviado às 9h e está tentando particionar novos dados para o SalesFact.
  • Q3 é enviado às 9h01 e deseja selecionar dados do SalesFact.

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

Pedidos não uniformes

Outro cenário em que a importância pode ajudar a atender às demandas de consulta é quando solicitações com diferentes classes de recursos são enviadas. Como foi mencionado anteriormente, sob a mesma importância, o pool SQL dedicado no Azure Synapse otimiza a taxa de transferência. Quando pedidos de tamanhos mistos (como smallrc ou mediumrc) são enfileirados, o pool SQL dedicado escolherá o primeiro pedido a chegar que se encaixa nos recursos disponíveis. Se a importância da carga de trabalho for aplicada, a solicitação de maior importância será agendada em seguida.

Considere o seguinte exemplo no DW500c:

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

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

Próximos passos