Använda Azure Functions för att hantera beräkningsresurser för din dedikerade SQL-pool (tidigare SQL DW) i Azure Synapse Analytics
I den här självstudien används Azure Functions för att hantera beräkningsresurser för en dedikerad SQL-pool (tidigare SQL DW) i Azure Synapse Analytics.
Om du vill använda en Azure-funktionsapp med en dedikerad SQL-pool (tidigare SQL DW) måste du skapa ett konto för tjänstens huvudnamn. Kontot för tjänstens huvudnamn behöver deltagaråtkomst under samma prenumeration som din dedikerade SQL-poolinstans (tidigare SQL DW).
Distribuera timerbaserad skalning med en Azure Resource Manager-mall
För att distribuera mallen behöver du följande information:
- Namnet på resursgruppen som din dedikerade SQL-poolinstans (tidigare SQL DW) finns i
- Namnet på servern som din dedikerade SQL-poolinstans (tidigare SQL DW) finns i
- Namnet på din dedikerade SQL-poolinstans (tidigare SQL DW)
- Klientorganisations-ID (katalog-ID) för ditt Microsoft Entra-ID
- Prenumerations-ID:t
- Program-ID för tjänstens huvudkonto
- Hemlig nyckel för tjänstens huvudkonto
När du har föregående information distribuerar du den här mallen:
När du har distribuerat mallen bör du hitta tre nya resurser: en kostnadsfri Azure App Service-plan, en förbrukningsbaserad funktionsappplan och ett lagringskonto som hanterar loggningen och driftkön. Fortsätta att läsa mer i andra avsnitt om du vill se hur du ändrar de distribuerade funktionerna så att de passar dina behov.
Ändra tid för skalningsåtgärden
Gå till funktionsapptjänsten. Om du har distribuerat mallen med standardvärden ska tjänsten ha namnet DWOperations. När funktionsappen är öppen bör du se fem funktioner som har driftsatts inom ramen för din funktionsapptjänst.
Välj antingen DWScaleDownTrigger eller DWScaleUpTrigger för att skala upp eller skala ned. I den nedrullningsbara menyn väljer du Integrera.
Det aktuella värdet ska antingen vara %ScaleDownTime% eller %ScaleUpTime%. Dessa värden anger att schemat baseras på värden som definierats i dina programinställningar. För tillfället kan du ignorera det här värdet och ändra schemat till önskad tid baserat på nästa steg.
I schemaområdet lägger du till DET CRON-uttryck som du vill återspegla hur ofta du vill att Azure Synapse Analytics ska skalas upp.
Värdet för
schedule
är ett CRON-uttryck som innehåller dessa sex fält:{second} {minute} {hour} {day} {month} {day-of-week}
Till exempel skulle "0 30 9 * * 1-5" återspegla en utlösare varje veckodag klockan 9:30. Mer information finns i Azure Functions schemaexempel.
Ändra beräkningsnivå
Gå till funktionsapptjänsten. Om du har distribuerat mallen med standardvärden ska tjänsten ha namnet DWOperations. När funktionsappen är öppen bör du se fem funktioner som har driftsatts inom ramen för din funktionsapptjänst.
Välj antingen DWScaleDownTrigger eller DWScaleUpTrigger för att skala upp eller skala ned beräkningsvärdet. När du har valt funktionerna ska fönstret innehålla filen index.js.
Ändra värdet för ServiceLevelObjective till den nivå du vill ha och välj Spara. ServiceLevelObjective är den beräkningsnivå som datalagerinstansen skalar till baserat på det schema som definieras i avsnittet Integrera.
Använd funktionerna Pausa eller Återuppta istället för Skala
Standardfunktionerna är för närvarande DWScaleDownTrigger och DWScaleUpTrigger. Om du vill använda funktionerna för att pausa och återuppta istället kan du aktivera DWPauseTrigger eller DWResumeTrigger.
Gå till funktionsfönstret.
Välj på skjutreglaget för motsvarande utlösare som du vill aktivera.
Navigera till fliken Integrera för respektive utlösare om du vill ändra schemat.
Kommentar
Den funktionella skillnaden mellan skalningsutlösare och utlösare för paus/återuppta är det meddelande som skickas till kön. Mer information finns i Lägga till en ny utlösarfunktion.
Lägg till en ny utlösare
För närvarande ingår bara två skalningsfunktioner i mallen. Med dessa funktioner kan du under en dag bara skala ned en gång och upp en gång. Om du vill ha mer detaljerad kontroll, till exempel att skala ned flera gånger per dag eller ha olika skalningsbeteende på helgerna, måste du lägga till en annan utlösare.
Skapa en ny tom funktion. + Välj knappen nära din Functions-plats för att visa funktionsmallsfönstret.
Från Språk väljer du JavaScript och sedan TimerTrigger.
Namnge din funktion och konfigurera ett schema. Bilden visar hur man utlöser en funktion varje lördag vid midnatt (sent fredag kväll).
Kopiera innehållet i index.js från någon av de andra utlösarfunktionerna.
Ställ in åtgärdsvariabeln på önskat beteende enligt följande:
// 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" }
Komplex schemaläggning
Det här avsnittet visar kortfattat vad som krävs för att få mer komplex schemaläggning av funktionerna pausa, återuppta och skala.
Exempel 1
Skala upp dagligen kl. 08.00 till DW600c och skala ned kl. 20:00 till DW200c.
Function | Schema | Åtgärd |
---|---|---|
Function1 | 0 0 8 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function2 | 0 0 20 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"} |
Exempel 2
Skala upp dagligen kl. 08.00 till DW1000c, skala ned en gång till DW600 kl. 16.00 och skala ned kl. 22.00 till DW200c.
Function | Schema | Åtgärd |
---|---|---|
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"} |
Exempel 3
Skala upp kl. 08.00 till DW1000c, skala ned en gång till DW600c klockan 16.00 på vardagar. Pausas fredagar kl. 23.00, återupptas kl. 07.00 på måndag morgon.
Function | Schema | Åtgärd |
---|---|---|
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"} |
Nästa steg
Läs mer om timerutlösaren Azure Functions.
Se lagringsplatsen för dedikerade SQL-poolexempel (tidigare SQL DW).