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:
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
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.
Selecione DWScaleDownTrigger ou DWScaleUpTrigger para escalar ou reduzir verticalmente. No menu suspenso, selecione Integrar.
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.
Na área de agendamento, adicione a expressão CRON para refletir a frequência desejada para escalar verticalmente o Azure Synapse Analytics.
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
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.
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.
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.
Navegue até o painel Funções.
Selecione o botão de alternância deslizante para os gatilhos correspondentes que você deseja habilitar.
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.
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.
Em Linguagem, selecione JavaScript, depois escolha TimerTrigger.
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).
Copie o conteúdo de index.js de uma das outras funções de gatilho.
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).