Gestione del carico di lavoro nella piattaforma di strumenti analitici

Le funzionalità di gestione del carico di lavoro di SQL Server PDW consentono a utenti e amministratori di assegnare richieste alle configurazioni preconfigurazioni di memoria e concorrenza. Usare la gestione del carico di lavoro per migliorare le prestazioni del carico di lavoro, coerente o misto, consentendo alle richieste di avere le risorse appropriate senza morire di fame per sempre.

Ad esempio, con le tecniche di gestione del carico di lavoro in SQL Server PDW, è possibile:

  • Allocare un numero elevato di risorse a un processo di caricamento.

  • Specificare altre risorse per la compilazione di un indice columnstore.

  • Risolvere i problemi relativi a un hash join a prestazioni lente per verificare se è necessaria una quantità maggiore di memoria e quindi assegnare maggiore memoria.

Nozioni di base sulla gestione dei carichi di lavoro

Termini importanti

Gestione del carico di lavoro
La Gestione del carico di lavoro è la possibilità di comprendere e regolare l'utilizzo delle risorse di sistema per ottenere prestazioni ottimali per le richieste simultanee.

Classe di risorse
In SQL Server PDW, una classe di risorse è un ruolo del server predefinito con limiti pre-assegnati per la memoria e la concorrenza. SQL Server PDW alloca le risorse alle richieste in base all'appartenenza al ruolo del server della classe di risorse dell'account di accesso che invia le richieste.

Nei nodi di calcolo l'implementazione delle classi di risorse usa la funzionalità Resource Governor in SQL Server. Per altre informazioni sulla funzionalità Resource Governor, vedere Resource Governor su MSDN.

Informazioni sull'utilizzo delle risorse corrente

Per comprendere l'utilizzo delle risorse di sistema per le richieste attualmente in esecuzione, usare le viste a gestione dinamica di SQL Server PDW. Ad esempio, è possibile usare DMV per comprendere se un hash join di grandi dimensioni a esecuzione lenta può trarre vantaggio dalla quantità di memoria maggiore.

Regolare l'assegnazione delle risorse

Per modificare l'utilizzo delle risorse, modificare l'appartenenza alla classe di risorse dell'account di accesso che invia la richiesta. I ruoli del server della classe di risorse sono denominati mediumrc, largerc e xlargerc. Rappresentano rispettivamente assegnazioni di risorse medie, di grandi dimensioni e di dimensioni aggiuntive.

Ad esempio, per assegnare una grande quantità di risorse di sistema a una richiesta, aggiungere l'account di accesso che invia la richiesta al ruolo del server largerc. L'istruzione ALTER SERVER ROLE seguente aggiunge l'account di accesso Anna al ruolo del server largerc.

ALTER SERVER ROLE largerc ADD MEMBER Anna;  

Descrizioni delle classi di risorse

Nella tabella seguente vengono descritte le classi di risorse e le relative assegnazioni delle risorse di sistema.

Classe di risorse Importanza della richiesta Utilizzo massimo della memoria* Slot di concorrenza (Massimo = 32) Descrizione
impostazione predefinita Medio 400 MB 1 Per impostazione predefinita, ogni account di accesso è consentito una piccola quantità di memoria e risorse di concorrenza per le richieste.

Quando un account di accesso viene aggiunto a una classe di risorse, la nuova classe ha la precedenza. Quando un account di accesso viene eliminato da tutte le classi di risorse, l'account di accesso torna all'assegnazione delle risorse predefinita.
MediumRC Medio 1200 MB 3 Esempi di richieste che potrebbero richiedere la classe di risorse di medie dimensioni:

Operazioni CTAS con hash join di grandi dimensioni.

Operazioni SELECT che richiedono più memoria per evitare la memorizzazione nella cache su disco.

Caricamento di dati in indici columnstore cluster.

Compilazione, ricompilazione e riorganizzazione degli indici columnstore cluster per tabelle più piccole con 10-15 colonne.
Largerc Alta 2,8 GB 7 Esempi di richieste che potrebbero richiedere la classe di risorse di grandi dimensioni:

Operazioni CTAS di grandi dimensioni che dispongono di hash join di grandi dimensioni o che contengono aggregazioni di grandi dimensioni, ad esempio clausole ORDER BY o GROUP BY di grandi dimensioni.

Operazioni SELECT che richiedono grandi quantità di memoria per operazioni quali hash join o aggregazioni come le clausole ORDER BY o GROUP BY

Caricamento di dati in indici columnstore cluster.

Compilazione, ricompilazione e riorganizzazione degli indici columnstore cluster per tabelle più piccole con 10-15 colonne.
xlargerc Alta 8,4 GB 22 La classe di risorse di grandi dimensioni aggiuntiva è destinata alle richieste che potrebbero richiedere un utilizzo aggiuntivo di risorse di grandi dimensioni in fase di esecuzione.

*L'utilizzo massimo della memoria è un'approssimazione.

Importanza della richiesta

L'importanza della richiesta è mappata alla quantità di tempo di CPU che SQL Server, in esecuzione nei nodi di calcolo, darà alle richieste. Le richieste con priorità più alta ricevono più tempo di CPU.

Utilizzo massimo della memoria*

L'utilizzo massimo della memoria è la quantità massima di memoria disponibile che una richiesta può usare all'interno di ogni spazio di elaborazione. Ad esempio, una richiesta mediumrc può usare fino a 1200 MB per l'elaborazione all'interno di ogni distribuzione. È comunque importante assicurarsi che i dati non siano asimmetrici per evitare di avere alcune distribuzioni che eseguono la maggior parte del lavoro.

Slot di concorrenza

L'obiettivo dell'allocazione di 1, 3, 7 e 22 slot di concorrenza consiste nel consentire l'esecuzione simultanea di processi di grandi dimensioni e di piccole dimensioni, senza bloccare un processo di piccole dimensioni quando è in esecuzione un processo di grandi dimensioni. Ad esempio, SQL Server PDW può assegnare un massimo di 32 slot di concorrenza per eseguire 1 richiesta di grandi dimensioni aggiuntiva (22 slot), 1 richiesta di grandi dimensioni (7 slot) e 1 richiesta media (3 slot) contemporaneamente.

Esempi di allocazione fino a 32 slot di concorrenza per le richieste simultanee:

  • 28 slot = 4 grandi

  • 30 slot = 10 medio

  • 32 slot = 32 valore predefinito

  • 32 slot = 1 extra grande + 1 grande + 1 medio

  • 32 slot = 2 grandi + 4 medio + 6 impostazione predefinita

Si supponga che 6 richieste di grandi dimensioni vengano inviate a SQL Server PDW e quindi vengano inviate 10 richieste predefinite. SQL Server PDW elabora le richieste in ordine di priorità come indicato di seguito:

  • Assegnare 28 slot di concorrenza per avviare l'elaborazione di 4 richieste di grandi dimensioni man mano che la memoria diventa disponibile e mantenere 2 richieste di grandi dimensioni nella coda.

  • Assegnare 4 slot di concorrenza per avviare l'elaborazione di 4 richieste predefinite e mantenere 6 richieste predefinite nella coda di attesa.

Quando le richieste terminano e diventano disponibili slot di concorrenza, SQL Server PDW allocherà le richieste rimanenti in base alle risorse e alla priorità disponibili. Ad esempio, quando sono aperti 7 slot di concorrenza, l'attesa di richieste di grandi dimensioni avrà una priorità più alta per 7 slot rispetto alle richieste medie in attesa. Se si aprono 6 slot, SQL Server PDW allocherà altre 6 richieste di dimensioni predefinite. Tuttavia, gli slot di memoria e concorrenza devono essere tutti disponibili prima che SQL Server PDW consenta l'esecuzione di una richiesta.

All'interno di ogni classe di risorse, le richieste vengono eseguite prima nell'ordine FIFO (First Out).

Osservazioni generali

Se un account di accesso è membro di più classi di risorse, la classe con la maggior parte delle risorse ha la precedenza.

Quando un account di accesso viene aggiunto o eliminato da una classe di risorse, la modifica diventa effettiva immediatamente per tutte le richieste future; le richieste correnti in esecuzione o in attesa non sono interessate. L'account di accesso non deve disconnettersi e riconnettersi per consentire l'esecuzione della modifica.

Per ogni account di accesso, le impostazioni della classe di risorse vengono applicate a singole istruzioni e operazioni e non alla sessione.

Prima che SQL Server PDW esegua un'istruzione, tenta di acquisire gli slot di concorrenza necessari per la richiesta. Se non riesce ad acquisire slot di concorrenza sufficienti, SQL Server PDW sposta la richiesta in uno stato di attesa da eseguire. Tutti i sistemi di risorse già allocati alla richiesta vengono restituiti al sistema.

La maggior parte delle istruzioni SQL richiede sempre le allocazioni di risorse predefinite e pertanto non è controllata dalle classi di risorse. Ad esempio, CREATE LOGIN richiede solo una piccola quantità di risorse e viene allocata le risorse predefinite anche se l'account di accesso che chiama CREATE LOGIN è membro di una classe di risorse. Ad esempio, se Anna è membro della classe di risorse più grande e invia un'istruzione CREATE LOGIN, l'istruzione CREATE LOGIN verrà eseguita con il numero predefinito di risorse.

Istruzioni SQL e operazioni regolate dalle classi di risorse:

  • ALTER INDEX REBUILD

  • ALTER INDEX REORGANIZE

  • ALTER TABLE REBUILD

  • CREATE CLUSTERED INDEX

  • CREATE CLUSTERED COLUMNSTORE INDEX

  • CREATE TABLE AS SELECT

  • CREATE REMOTE TABLE AS SELECT

  • Caricamento di dati con dwloader.

  • INSERT SELECT

  • UPDATE

  • DELETE

  • RESTORE DATABASE durante il ripristino in un'appliance con più nodi di calcolo.

  • SELECT, escludere le query solo DMV

Limitazioni e restrizioni

Le classi di risorse regolano le allocazioni di memoria e concorrenza. Non regolano le operazioni di input/output.

Metadati UFX

DMV che contengono informazioni sulle classi di risorse e sui membri della classe di risorse.

DMV che contengono informazioni sullo stato delle richieste e sulle risorse necessarie:

Visualizzazioni di sistema correlate esposte dalle DMV di SQL Server nei nodi di calcolo. Vedere Viste a gestione dinamica di SQL Server per i collegamenti a queste DMV su MSDN.

  • sys.dm_pdw_nodes_resource_governor_resource_pools

  • sys.dm_pdw_nodes_resource_governor_workload_groups

  • sys.dm_pdw_nodes_resource_governor_resource_pools

  • sys.dm_pdw_nodws_resource_governor_workload_groups

  • sys.dm_pdw_nodes_exec_sessions

  • sys.dm_pdw_nodes_exec_requests

  • sys.dm_pdw_nodes_exec_query_memory_grants

  • sys.dm_pdw_nodes_exec_query_resource_semaphores

  • sys.dm_pdw_nodes_os_memory_brokers

  • sys.dm_pdw_nodes_os_memory_cache_entries

  • sys.dm_pdw_nodes_exec_cached_plans

Attività correlate

Attività di gestione dei carichi di lavoro