Gestione del carico di lavoro nel sistema della piattaforma di analisi

SQL Server PDW funzionalità di gestione del carico di lavoro consentono a utenti e amministratori di assegnare richieste a configurazioni pre-impostate 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 eliminare definitivamente le richieste.

Ad esempio, con le tecniche di gestione del carico di lavoro 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 di un hash join lente per verificare se è necessario più memoria e quindi assegnare una maggiore quantità di memoria.

Nozioni di base sulla gestione del carico di lavoro

Termini chiave

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 che ha limiti pre-assegnati per la memoria e la concorrenza. SQL Server PDW alloca 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 Resource Governor funzionalità in SQL Server. Per altre informazioni sui Resource Governor, vedere Resource Governor su MSDN.

Informazioni sull'utilizzo corrente delle risorse

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

Modificare le allocazioni di 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 allocazioni di risorse medie, grandi ed extra large.

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

ALTER SERVER ROLE largerc ADD MEMBER Anna;  

Descrizioni delle classi di risorse

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

Classe di risorse Priorità della richiesta Utilizzo massimo memoria* Slot di concorrenza (massimo = 32) Descrizione
default Media 400 MB 1 Per impostazione predefinita, a ogni account di accesso è consentita 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'allocazione di risorse predefinita.
MediumRC Medio 1200 MB 3 Esempi di richieste che potrebbero richiedere la classe di risorse media:

Operazioni CTAS con hash join di grandi dimensioni.

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

Caricamento di dati in indici columnstore cluster.

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

Operazioni CTAS di dimensioni molto grandi con hash join di grandi dimensioni o contenenti 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 clausole ORDER BY o GROUP BY

Caricamento di dati in indici columnstore cluster.

Compilazione, ricompilazione e riorganizzazione di indici columnstore cluster per tabelle più piccole con 10-15 colonne.
xlargerc Alto 8,4 GB 22 La classe di risorse di dimensioni molto grandi è per le richieste che potrebbero richiedere un consumo di risorse molto elevato in fase di esecuzione.

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

Importanza della richiesta

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

Utilizzo massimo 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 a differenza per evitare che alcune distribuzioni esercitino la maggior parte del lavoro.

Slot di concorrenza

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

Esempi di allocazione di un massimo di 32 slot di concorrenza a richieste simultanee:

  • 28 slot = 4 slot di grandi dimensioni

  • 30 slot = 10 medie

  • 32 slot = 32 predefinito

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

  • 32 slot = 2 grandi + 4 medie + 6 predefinite

Si supponga di 6 richieste di grandi SQL Server PDW e quindi di 10 richieste predefinite. SQL Server PDW le richieste verranno elaborate in ordine di priorità come indicato di seguito:

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

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

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

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

Osservazioni generali

Se un account di accesso è membro di più di una classe 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 viene apportata immediatamente per tutte le richieste future. Le richieste correnti in esecuzione o in attesa non sono interessate. Non è necessario che l'account di accesso si disconnetti e riconnetta per eseguire la modifica.

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

Prima SQL Server PDW un'istruzione, tenta di acquisire gli slot di concorrenza necessari per la richiesta. Se non è in grado di acquisire un numero sufficiente di slot di concorrenza, SQL Server PDW sposta la richiesta in uno stato in attesa di esecuzione. Tutte le risorse di sistema già allocate alla richiesta vengono restituite al sistema.

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

Istruzioni e operazioni SQL regolate dalle classi di risorse:

  • ALTER INDEX REBUILD

  • ALTER INDEX REORGANIZE

  • MODIFICA TABELLA RICOMPILAZIONE

  • 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, escluse 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

DMV contenenti informazioni sulle classi di risorse e sui membri delle classi di risorse.

DMV contenenti informazioni sullo stato delle richieste e sulle risorse necessarie:

Viste di sistema correlate esposte dal SQL Server dmv nei nodi di calcolo. Vedere SQL Server dmv per i collegamenti a queste DMV in 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à di gestione del carico di lavoro