Importanza del carico di lavoro di Azure Synapse Analytics

Questo articolo illustra in che modo l'importanza del carico di lavoro può influenzare l'ordine di esecuzione per le richieste del pool SQL dedicato in Azure Synapse.

Priorità

Le esigenze aziendali possono richiedere che i carichi di lavoro di data warehousing siano più importanti di altri. Si consideri uno scenario in cui i dati di vendita cruciali vengono caricati prima della chiusura del periodo fiscale. I caricamenti di dati per altre origini, ad esempio i dati meteo, non hanno contratti di servizio rigorosi. L'impostazione di un'importanza elevata per una richiesta di caricamento dei dati di vendita e di bassa importanza per una richiesta di caricamento dei dati meteo garantisce che il caricamento dei dati di vendita ottenga prima l'accesso alle risorse e venga completato più rapidamente.

Livelli di importanza

Sono previsti cinque livelli di importanza: low, below_normal, normal, above_normal e high. Alle richieste che non impostano l'importanza viene assegnato il livello predefinito normal. Le richieste con lo stesso livello di importanza hanno lo stesso comportamento di pianificazione attualmente esistente.

Scenari di importanza

Oltre allo scenario di importanza di base descritto in precedenza con i dati meteo e di vendita, esistono altri scenari in cui l'importanza del carico di lavoro consente di soddisfare le esigenze di elaborazione dei dati e query.

Blocco

L'accesso ai blocchi per l'attività di lettura e scrittura è un'area di contesa naturale. Le attività come cambio di partizione o RENAME OBJECT richiedono blocchi elevati. Senza importanza del carico di lavoro, il pool SQL dedicato in Azure Synapse ottimizza la velocità effettiva. L'ottimizzazione della velocità effettiva significa che quando le richieste in esecuzione e in coda hanno le stesse esigenze di blocco e le risorse sono disponibili, le richieste in coda possono scavalcare le richieste con esigenze di blocco più elevate che sono arrivate prima nella coda delle richieste. Una volta applicata l'importanza del carico di lavoro alle richieste con esigenze di blocco più elevate. La richiesta con priorità più alta verrà eseguita prima della richiesta con priorità inferiore.

Si consideri l'esempio seguente:

  • Q1 esegue attivamente e seleziona i dati da SalesFact.
  • Q2 è in coda in attesa del completamento di Q1. È stata inviata alle 9:00 e sta tentando di partizionare i nuovi dati in SalesFact.
  • Q3 viene inviata alle 9:01 e vuole selezionare i dati da SalesFact.

Se Q2 e Q3 hanno la stessa importanza e Q1 è ancora in esecuzione, Q3 inizierà l'esecuzione. Q2 continuerà ad attendere un blocco esclusivo su SalesFact. Se Q2 ha un'importanza superiore a Q3, Q3 attenderà fino al termine di Q2 prima di poter iniziare l'esecuzione.

Richieste non uniformi

Un altro scenario in cui l'importanza può aiutare a soddisfare le richieste di query è quando vengono inviate richieste con classi di risorse diverse. Come accennato in precedenza, con la stessa importanza, il pool SQL dedicato in Azure Synapse ottimizza la velocità effettiva. Quando le richieste di dimensioni miste (ad esempio smallrc o mediumrc) vengono accodate, il pool SQL dedicato sceglierà la prima richiesta in arrivo che rientra nelle risorse disponibili. Se viene applicata l'importanza del carico di lavoro, la richiesta di priorità più alta viene pianificata successivamente.

Si consideri l'esempio seguente su DW500c:

  • Q1, Q2, Q3 e Q4 eseguono query smallrc.
  • Q5 viene inviata con la classe di risorse mediumrc alle 9:00.
  • Q6 viene inviata con la classe di risorse smallrc alle 9:01.

Poiché Q5 è mediumrc, richiede due slot di concorrenza. Q5 deve attendere il completamento di due query in esecuzione. Tuttavia, quando una delle query in esecuzione (Q1-Q4) viene completata, Q6 viene pianificata immediatamente perché le risorse esistono per eseguire la query. Se Q5 ha un'importanza superiore a Q6, Q6 attende fino a quando Q5 non viene eseguita prima di poter iniziare l'esecuzione.

Passaggi successivi