Usar o Azure Functions para gerenciar os recursos de computação do pool de SQL dedicado (anteriormente conhecido como SQL DW) no Azure Synapse Analytics

Este tutorial usa o Azure Functions para gerenciar os recursos de computação do seu pool de SQL dedicado (anteriormente conhecido como SQL DW) no Azure Synapse Analytics.

Para usar um aplicativo de funções do Azure com um pool de SQL dedicado (anteriormente conhecido como SQL DW), você deve criar uma Conta de Entidade de Serviço. Essa conta precisa de acesso de colaborador na mesma assinatura que a instância do pool de SQL dedicado (anteriormente conhecido como SQL DW).

Implantar o escalonador baseado em temporizador com um modelo do Azure Resource Manager

Para implantar o modelo, você precisa das informações a seguir:

  • Nome do grupo de recursos em que a instância do pool de SQL dedicado (anteriormente conhecido como SQL DW) está
  • Nome do servidor em que a instância do pool de SQL dedicado (anteriormente conhecido como SQL DW) está
  • Nome da instância do pool de SQL dedicado (anteriormente conhecido como SQL DW)
  • ID do locatário (ID do Diretório) da ID do Microsoft Entra
  • ID da assinatura
  • ID do aplicativo da entidade de serviço
  • Chave secreta da entidade de serviço

Após reunir as informações anteriores, implante este modelo:

Image showing a button labeled

Depois de implantar o modelo, você deve encontrar três novos recursos: um plano do Serviço de Aplicativo do Azure gratuito, um plano do Aplicativo de funções baseado em consumo e uma conta de armazenamento que manipula o registro em log e a fila de operações. Continue a ler as outras seções para saber como modificar as funções implantadas de acordo com as suas necessidades.

Altere o tempo da operação de escala

  1. Navegue até o serviço d do Aplicativo de funções. Se você implantou o modelo com os valores padrão, esse serviço deve ser chamado DWOperations. Quando seu Aplicativo de funções for aberto, você deve observar que há cinco funções implantadas para a função do Serviço de Aplicativo de funções.

    Functions that are deployed with template

  2. Selecione DWScaleDownTrigger ou DWScaleUpTrigger para escalar ou reduzir verticalmente. No menu suspenso, selecione Integrar.

    Select Integrate for function

  3. O valor exibido deve ser ScaleDownTime % ou ScaleUpTime %. Esses valores indicam que o agendamento se baseia nos valores definidos nas suas Configurações do aplicativo. Por enquanto, você pode ignorar esse valor e alterar o agendamento para a hora de sua preferência com base nas próximas etapas.

  4. Na área de agendamento, adicione a expressão CRON para refletir a frequência desejada para escalar verticalmente o Azure Synapse Analytics.

    Change function schedule

    O valor de schedule é uma expressão CRON que inclui estes seis campos:

    {second} {minute} {hour} {day} {month} {day-of-week}
    

    Por exemplo "0 30 9 * * 1-5" refletiria um gatilho cada dia útil às 9:30. Para obter mais informações, visite exemplos de agendamento do Azure Functions.

Alterar o nível de computação

  1. Navegue até o serviço d do Aplicativo de funções. Se você implantou o modelo com os valores padrão, esse serviço deve ser chamado DWOperations. Quando seu Aplicativo de funções for aberto, você deve observar que há cinco funções implantadas para a função do Serviço de Aplicativo de funções.

  2. Selecione DWScaleDownTrigger ou DWScaleUpTrigger para escalar ou reduzir verticalmente o valor de computação. Ao selecionar as funções, o painel deve mostrar o arquivo index.js.

    Change function trigger compute level

  3. Altere o valor de ServiceLevelObjective para o nível desejado e selecione salvar. O ServiceLevelObjective é o nível de computação para o qual a sua instância de data warehouse será escalada com base no agendamento definido na seção Integrar.

Usar pausar ou retomar em vez do dimensionamento

Atualmente, as funções habilitadas por padrão são DWScaleDownTrigger e DWScaleUpTrigger. No entanto, se você quiser usar a funcionalidade de pausar e retomar, você pode habilitar DWPauseTrigger ou DWResumeTrigger.

  1. Navegue até o painel Funções.

    Functions pane

  2. Selecione o botão de alternância deslizante para os gatilhos correspondentes que você deseja habilitar.

  3. Navegue até as guias Integrar dos respectivos gatilhos para alterar o agendamento.

    Observação

    A diferença funcional entre os gatilhos de escala e os gatilhos de pausar/retomar é a mensagem que é enviada para a fila. Para saber mais, confira Adicionar uma nova função de gatilho.

Adicionar uma nova função de gatilho

Atualmente, há apenas duas funções de dimensionamento incluídas no modelo. Com essas funções, no decorrer de um dia, você só pode escalar e reduzir verticalmente somente uma vez. Para um controle mais granular, como reduzir verticalmente várias vezes por dia ou ter um comportamento de dimensionamento diferente nos finais de semana, você precisa adicionar outro gatilho.

  1. Criar uma nova função em branco. Selecione o botão + perto da localização de Funções para exibir o painel de modelos de função.

    Screenshot that shows the

  2. Em Linguagem, selecione JavaScript, depois escolha TimerTrigger.

    Create new function

  3. Nomeie a sua função e defina o agendamento. A imagem mostra como fazer para disparar sua função todos os sábados à meia-noite (tarde da noite de sexta-feira).

    Scale down Saturday

  4. Copie o conteúdo de index.js de uma das outras funções de gatilho.

    Copy index js

  5. Defina a sua variável de operação para o comportamento desejado da seguinte maneira:

    // Resume the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "ResumeDw"
    }
    
    // Pause the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "PauseDw"
    }
    
    // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c
    var operation = {
        "operationType": "ScaleDw",
        "ServiceLevelObjective": "DW600c"
    }
    

Agendamentos complexos

Esta seção demonstra brevemente o que é necessário para aproveitar mais os recursos de agendamento complexo para pausar, retomar e dimensionar.

Exemplo 1

Escalar verticalmente todos os dias às 8:00 para DW600c e reduzir verticalmente às 20:00 para DW200c.

Função Agenda Operação
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function2 0 0 20 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Exemplo 2

Escalar verticalmente todos os dias às 8:00 para DW1000c, reduzir verticalmente uma vez para DW600 às 16:00 e reduzir verticalmente às 22:00 para DW200c.

Função Agenda Operação
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 22 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Exemplo 3

Escalar verticalmente às 8:00 para DW1000c, reduzir verticalmente uma vez para DW600c às 16:00 em dias úteis. Pausar sexta-feira às 23:00, retomar segunda-feira de manhã às 7:00.

Função Agenda Operação
Function1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Function4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

Próximas etapas

Saiba mais sobre as funções de gatilho de temporizador do Azure.

Confira o repositório de exemplos do pool de SQL dedicado (anteriormente conhecido como SQL DW).