Usare Funzioni di Azure per gestire le risorse di calcolo per il pool SQL dedicato (in precedenza SQL Data Warehouse) in Azure Synapse Analytics

Questa esercitazione usa Funzioni di Azure per gestire le risorse di calcolo per un pool SQL dedicato (in precedenza SQL Data Warehouse) in Azure Synapse Analytics.

Per usare un'app per le funzioni di Azure con un pool SQL dedicato (in precedenza SQL Data Warehouse), è necessario creare un account entità servizio. L'account dell'entità servizio richiede l'accesso come collaboratore nella stessa sottoscrizione dell'istanza del pool SQL dedicato (in precedenza SQL Data Warehouse).

Distribuire il ridimensionamento basato su timer con un modello di Azure Resource Manager

Per distribuire il modello sono necessarie le informazioni seguenti:

  • Nome del gruppo di risorse in cui si trova l'istanza del pool SQL dedicato (in precedenza SQL Data Warehouse)
  • Nome del server in cui si trova l'istanza del pool SQL dedicato (in precedenza SQL Data Warehouse)
  • Nome dell'istanza del pool SQL dedicato (in precedenza SQL Data Warehouse)
  • ID tenant (ID directory) dell'ID Microsoft Entra
  • ID sottoscrizione
  • ID applicazione dell'entità servizio
  • Chiave privata dell'entità servizio

Dopo aver recuperato le informazioni riportate sopra, distribuire questo modello:

Image showing a button labeled

Al termine della distribuzione del modello, dovrebbero essere presenti tre nuove risorse: un piano di servizio app di Azure gratuito, un piano di app per le funzioni a consumo e un account di archiviazione che gestisce la registrazione e la coda delle operazioni. Per informazioni su come modificare le funzioni distribuite in base alle esigenze, vedere le altre sezioni.

Modificare la data e l'ora dell'operazione di ridimensionamento

  1. Passare al servizio app per le funzioni. Se il modello è stato distribuito con i valori predefiniti, il servizio sarà denominato DWOperations. Dopo aver aperto l'app per le funzioni, si noterà che nel servizio app per le funzioni sono distribuite cinque funzioni.

    Functions that are deployed with template

  2. Selezionare DWScaleDownTrigger o DWScaleUpTrigger per aumentare o ridurre le prestazioni. Nel menu a discesa selezionare Integrazione.

    Select Integrate for function

  3. Il valore attualmente visualizzato dovrebbe essere %ScaleDownTime% o %ScaleUpTime%. Questi valori indicano che la pianificazione è basata sui valori definiti nelle impostazioni dell'applicazione. Per il momento è possibile ignorare questo valore e modificare la pianificazione impostando la data e l'ora preferite in base ai passaggi successivi.

  4. Nell'area di pianificazione aggiungere l'espressione CRON da riflettere la frequenza con cui si vuole aumentare le prestazioni di Azure Synapse Analytics.

    Change function schedule

    Il valore di schedule è un'espressione CRON che include i 6 campi seguenti:

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

    Ad esempio, "0 30 9 * * 1-5" corrisponde a un trigger alle 9.30 di ogni giorno feriale. Per altre informazioni, vedere gli esempi di pianificazione di Funzioni di Azure.

Modificare il livello di calcolo

  1. Passare al servizio app per le funzioni. Se il modello è stato distribuito con i valori predefiniti, il servizio sarà denominato DWOperations. Dopo aver aperto l'app per le funzioni, si noterà che nel servizio app per le funzioni sono distribuite cinque funzioni.

  2. Selezionare DWScaleDownTrigger o DWScaleUpTrigger per aumentare o ridurre il valore di calcolo. Quando si selezionano le funzioni, nel riquadro dovrebbe essere visualizzato il file index.js.

    Change function trigger compute level

  3. Modificare il valore di ServiceLevelObjective nel livello desiderato e selezionare Salva. ServiceLevelObjective è il livello di calcolo su cui verrà ridimensionata l'istanza del data warehouse in base alla pianificazione definita nella sezione Integrazione.

Usare la sospensione o la ripresa invece del ridimensionamento

Attualmente, le funzioni attivate per impostazione predefinita sono DWScaleDownTrigger e DWScaleUpTrigger. Se si preferisce invece sospendere e riprendere le funzionalità, è possibile abilitare DWPauseTrigger o DWResumeTrigger.

  1. Passare al riquadro Funzioni.

    Functions pane

  2. Selezionare l'interruttore scorrevole per i trigger corrispondenti da abilitare.

  3. Passare alle schede Integrazione per i rispettivi trigger per modificarne la pianificazione.

    Nota

    La differenza funzionale fra i trigger di ridimensionamento e i trigger di sospensione o ripresa è data dal messaggio inviato alla coda. Per altre informazioni, vedere Aggiungere una nuova funzione trigger.

Aggiungere una nuova funzione trigger

Attualmente, nel modello sono incluse solo due funzioni di ridimensionamento. Con queste funzioni, nel corso di un giorno è possibile eseguire solo una riduzione e un aumento delle prestazioni. Per un controllo più granulare, ad esempio per ridurre le prestazioni più volte al giorno o impostare un comportamento di ridimensionamento diverso nei fine settimana, è necessario aggiungere un altro trigger.

  1. Creare una nuova funzione vuota. Selezionare il pulsante + accanto a Funzioni per visualizzare il riquadro dei modelli di funzioni.

    Screenshot that shows the

  2. In Linguaggio selezionare JavaScript e quindi TimerTrigger.

    Create new function

  3. Assegnare un nome alla funzione e impostare la pianificazione. L'immagine mostra come è possibile attivare la funzione ogni sabato a mezzanotte (ossia nella tarda serata di venerdì).

    Scale down Saturday

  4. Copiare il contenuto di index.js da una delle altre funzioni trigger.

    Copy index js

  5. Impostare la variabile operation sul comportamento desiderato come illustrato di seguito:

    // 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"
    }
    

Pianificazione complessa

Questa sezione illustra brevemente gli elementi necessari per ottenere una pianificazione più complessa delle funzionalità di sospensione, ripresa e ridimensionamento.

Esempio 1

Aumento giornaliero alle 8:00 a DW600c e riduzione delle prestazioni alle 18:00 fino a DW200c.

Funzione Pianificazione Operazione
Funzione 1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funzione 2 0 0 20 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Esempio 2

Aumentare ogni giorno le 8:00 fino a DW1000c, ridurre le prestazioni una volta a DW600 alle 14:00 e ridurre le prestazioni alle 10:00 fino a DW200c.

Funzione Pianificazione Operazione
Funzione 1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Funzione 2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funzione 3 0 0 22 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Esempio 3

Aumentare le prestazioni alle 8:00 a DW1000c, ridurre una volta a DW600c alle 18:00 nei giorni feriali. nonché sospendere alle ore 23 di venerdì e riprendere alle ore 7 di lunedì.

Funzione Pianificazione Operazione
Funzione 1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Funzione 2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Funzione 3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Funzione 4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

Passaggi successivi

Altre informazioni sul trigger timer Funzioni di Azure.

Vedere repository di esempi di pool SQL dedicato (in precedenza SQL Data Warehouse).