Condividi tramite


Gestione del carico di lavoro nel sistema della piattaforma di analisi

Le funzionalità di gestione del carico di lavoro di SQL Server PDW consentono a utenti e amministratori di assegnare richieste a configurazioni predefinite di memoria e concorrenza. Utilizzare la gestione dei carichi di lavoro per migliorare le prestazioni, sia in un contesto coerente che misto, consentendo alle richieste di avere le risorse appropriate senza lasciarle in attesa indefinitamente.

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

  • Assegnare un numero elevato di risorse a un'attività 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 chiave

Gestione del carico di lavoro
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 assegnati in anticipo per la memoria e la concorrenzialità. 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 su Resource Governor, vedere Resource Governor su MSDN.

Comprendere l'utilizzo attuale delle risorse

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 le DMVs per comprendere se un hash join di grandi dimensioni a esecuzione lenta può trarre vantaggio da una maggiore quantità di memoria.

Modificare le allocazioni 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, largerce xlargerc. Rappresentano rispettivamente allocazioni di risorse medie, di grandi dimensioni e di dimensioni aggiuntive.

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 il login Anna al ruolo 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 Importanza della richiesta Utilizzo massimo memoria* Slot di concorrenza (massimo = 32) Descrizione
predefinito Medio 400 megabyte 1 Per impostazione predefinita, ciascun login ha a disposizione una piccola quantità di memoria e risorse di concorrenza per le sue 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 Megabyte 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 raggruppati.

Creazione, ricostruzione e riorganizzazione degli indici clustered columnstore per tabelle più piccole con 10-15 colonne.
Più grande Alto 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 quantità molto grandi di memoria per operazioni quali hash join o aggregazioni come le clausole ORDER BY o GROUP BY

Caricamento di dati in indici columnstore raggruppati.

Creazione, ricostruzione e riorganizzazione degli indici clustered columnstore per tabelle più piccole con 10-15 colonne.
xlargerc Alto 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 corrisponde alla quantità di tempo di CPU che SQL Server, in esecuzione nei nodi di calcolo, attribuirà 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 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ò allocare 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 di fino a 32 slot di concorrenza per le richieste concorrenti:

  • 28 slot = 4 grandi

  • 30 slot = 10 medi

  • 32 slot = 32 valore predefinito

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

  • 32 slot = 2 grandi + 4 medi + 6 impostazioni predefinite

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:

  • Allocare 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.

  • 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 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 ci sono 7 slot di concorrenza aperti, le richieste di grandi dimensioni in attesa avranno una priorità più alta per quei 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 permetta a una richiesta di essere eseguita.

All'interno di ogni classe di risorse, le richieste vengono eseguite nell'ordine primo arrivato, primo servito (FIFO).

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 accesso, le impostazioni della classe di risorse vengono applicate alle 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 è in grado di acquisire slot di concorrenza sufficienti, SQL Server PDW sposta la richiesta in uno stato di attesa,to-beeseguito. Tutte le risorse di sistema già allocate alla richiesta vengono restituite 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 vengono allocate le risorse predefinite anche se il login che esegue CREATE LOGIN è 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

  • ALTER TABLE REBUILD

  • CREATE CLUSTERED INDEX

  • CREARE UN INDICE COLUMNSTORE CLUSTER

  • CREA TABELLA COME SELEZIONA

  • CREA TABELLA REMOTA COME SELECT

  • Caricamento di dati con dwloader.

  • INSERT-SELECT

  • AGGIORNAMENTO

  • CANCELLARE

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

  • SELECT, escludendo le query relative solo ai DMV

Limitazioni e restrizioni

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

Metadati

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

DMV che forniscono informazioni sullo stato delle richieste e sulle risorse di cui hanno bisogno:

Viste di sistema correlate esposte dalle DMV di SQL Server nei nodi di calcolo. Vedere Viste di Gestione Dinamica di SQL Server per 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 del carico di lavoro