Partilhar via


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

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

Para usar um Aplicativo de Função do Azure com um pool SQL dedicado (anteriormente SQL DW), você deve criar uma Conta Principal de Serviço. A Conta Principal de Serviço precisa de acesso de colaborador sob a mesma assinatura que sua instância dedicada do pool SQL (anteriormente SQL DW).

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

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

  • Nome do grupo de recursos em que sua instância dedicada do pool SQL (anteriormente SQL DW) está
  • Nome do servidor em que sua instância dedicada do pool SQL (anteriormente SQL DW) está
  • Nome da instância dedicada do pool SQL (anteriormente SQL DW)
  • ID do locatário (ID do diretório) do seu ID do Microsoft Entra
  • ID da subscrição
  • ID da Aplicação Principal de Serviço
  • Chave do Segredo do Principal de Serviço

Depois de ter 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 de Serviço de Aplicativo do Azure gratuito, um plano de Aplicativo de Função baseado em consumo e uma conta de armazenamento que lida com o log e a fila de operações. Continue a ler as outras secções para ver como modificar as funções implementadas de acordo com as suas necessidades.

Alterar o tempo da operação de escala

  1. Navegue para o serviço Function App. Se tiver implementado o modelo com os valores predefinidos, este serviço deverá chamar-se DWOperations. Assim que Function App estiver aberto, deverá ver cinco funções implementadas no seu serviço do Function App.

    Functions that are deployed with template

  2. Selecione DWScaleDownTrigger ou DWScaleUpTrigger para aumentar ou diminuir a escala. No menu suspenso, selecione Integrar.

    Select Integrate for function

  3. Atualmente, o valor apresentado deverá indicar %ScaleDownTime% ou %ScaleUpTime%. Estes valores indicam que a agenda se baseia nos valores definidos nas Definições da Aplicação. Por enquanto, você pode ignorar esse valor e alterar a programação para o horário de sua preferência com base nas próximas etapas.

  4. Na área de agenda, adicione a expressão CRON que você gostaria de refletir com que frequência deseja que o Azure Synapse Analytics seja ampliado.

    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 todos os dias da semana às 9h30. Para obter mais informações, veja os exemplos de agendas do Azure Functions.

Alterar o nível de computação

  1. Navegue para o serviço Function App. Se tiver implementado o modelo com os valores predefinidos, este serviço deverá chamar-se DWOperations. Assim que Function App estiver aberto, deverá ver cinco funções implementadas no seu serviço do Function App.

  2. Selecione DWScaleDownTrigger ou DWScaleUpTrigger para aumentar ou reduzir o valor de computação. Após selecionar as funções, o painel deve mostrar o ficheiro 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 sua instância de data warehouse será dimensionada com base no cronograma definido na seção Integrar.

Utilizar a pausa ou a retoma em vez do dimensionamento

Atualmente, as funções ligadas por predefinição são DWScaleDownTrigger e DWScaleUpTrigger. Em alternativa, se pretender utilizar a funcionalidade de pausa e retoma, pode ativar DWPauseTrigger ou DWResumeTrigger.

  1. Navegue para o painel Functions.

    Functions pane

  2. Selecione na alternância deslizante para os gatilhos correspondentes que você gostaria de ativar.

  3. Navegue para os separadores Integrate de cada acionador, para alterar as agendas dos mesmos.

    Nota

    A diferença funcional entre os gatilhos de dimensionamento e os gatilhos de pausa/retomada é a mensagem enviada para a fila. Para obter mais informações, consulte Adicionar uma nova função de gatilho.

Adicionar uma nova função de acionador

Atualmente, o modelo inclui apenas duas funções de dimensionamento. Com essas funções, ao longo de um dia, você só pode reduzir a escala uma vez e aumentar uma vez. Para um controle mais granular, como reduzir a escala várias vezes por dia ou ter um comportamento de dimensionamento diferente nos fins de semana, você precisa adicionar outro gatilho.

  1. Crie uma função em branco nova. Selecione o botão perto do local Funções para mostrar o + painel de modelo de função.

    Screenshot that shows the

  2. Em Language, selecione JavaScript e, em seguida, TimerTrigger.

    Create new function

  3. Dê um nome à função e defina a agenda. A imagem mostra como um utilizador pode acionar a função todos os sábados à meia-noite (sexta ao fim do dia ).

    Scale down Saturday

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

    Copy index js

  5. Defina 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"
    }
    

Agendamento complexo

Esta seção demonstra brevemente o que é necessário para obter um agendamento mais complexo dos recursos de pausa, retomada e dimensionamento.

Exemplo 1

Escale diariamente às 8h para DW600c e diminua às 20h para DW200c.

Function 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

Escale diariamente às 8h para DW1000c, diminua uma vez para DW600 às 16h e diminua às 22h para DW200c.

Function 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

Aumente a escala às 8h para DW1000c, diminua uma vez para DW600c às 16h nos dias úteis. É colocado em pausa à sexta-feira às 23:00 e retomado às 7:00 de segunda-feira.

Function 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óximos passos

Saiba mais sobre o gatilho de temporizador Azure Functions.

Consulte o repositório de exemplos do pool SQL dedicado (anteriormente SQL DW).