Manuale di implementazione WLM - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Manuale di implementazione WLM

Con manualWLM, puoi gestire le prestazioni del sistema e l'esperienza degli utenti modificando la WLM configurazione per creare code separate per le query di lunga durata e le query di breve durata.

Quando gli utenti eseguono query in Amazon Redshift, le query vengono indirizzate alle code di query. Ogni coda di query contiene un numero di slot di query. A ogni coda viene assegnata una parte della memoria disponibile del cluster. La memoria di una coda viene ripartita tra gli slot di query della coda. Puoi abilitare Amazon Redshift per gestire automaticamente la concorrenza delle query. WLM Per ulteriori informazioni, consulta Implementazione automatica WLM.

Oppure puoi configurare le WLM proprietà per ogni coda di interrogazioni. Tale operazione serve per specificare il modo in cui la memoria viene allocata agli slot e come le query vengono indirizzate alle code specifiche durante il runtime. È inoltre possibile configurare le WLM proprietà per annullare le interrogazioni a esecuzione prolungata.

Per impostazione predefinita, Amazon Redshift configura le code di query elencate di seguito:

  • Una coda dell'utente con privilegi avanzati

    La coda dell'utente con privilegi avanzati è riservata solo agli utenti con privilegi avanzati e non può essere configurata. Utilizzare questa coda solo se è necessario eseguire query che interessano il sistema o per la risoluzione dei problemi. Ad esempio, utilizzare questa coda quando è necessario annullare la query a esecuzione prolungata di un utente o aggiungere utenti al database. Non utilizzarla per eseguire le query di routine. La coda non viene mostrata nella console, ma è presente nelle tabelle di sistema del database come quinta coda. Per eseguire una query nella coda dell'utente con privilegi avanzati, un utente deve aver eseguito l'accesso come utente con privilegi avanzati e deve eseguire la query utilizzando il gruppo di query predefinito superuser.

  • Una coda dell'utente predefinita

    La coda predefinita è inizialmente configurata per eseguire cinque query contemporaneamente. Quando si utilizza la modalità manualeWLM, è possibile modificare le proprietà di concorrenza, timeout e allocazione della memoria per la coda predefinita, ma non è possibile specificare gruppi di utenti o gruppi di query. La coda predefinita deve essere l'ultima coda nella configurazione. WLM Qualsiasi query che non viene instradata ad altre code, viene eseguita nella coda predefinita.

Le code di interrogazione sono definite nella configurazione. WLM La WLM configurazione è un parametro modificabile (wlm_json_configuration) in un gruppo di parametri, che può essere associato a uno o più cluster. Per informazioni, consulta Configurazione della gestione del carico di lavoro nella Guida alla gestione di Amazon Redshift.

È possibile aggiungere code di interrogazione aggiuntive alla WLM configurazione predefinita, fino a un totale di otto code utente. Per ogni coda di query puoi configurare le seguenti opzioni:

  • Modalità dimensionamento simultaneo

  • Livello di simultaneità

  • Gruppi di utenti

  • Gruppi di query

  • WLMpercentuale di memoria da utilizzare

  • WLMtimeout

  • WLMsalto nella coda delle interrogazioni

  • Regole di monitoraggio delle query

Modalità dimensionamento simultaneo

Quando il dimensionamento simultaneo è abilitato, Amazon Redshift aggiunge automaticamente ulteriore capacità del cluster quando necessario per elaborare un aumento delle query di lettura r scrittura simultanee. Gli utenti visualizzano sempre i dati più recenti, indipendentemente dal fatto che le query vengano eseguite nel cluster principale o in un cluster di dimensionamento simultaneo.

È possibile gestire le query da inviare al cluster di scalabilità simultanea configurando le code. WLM Quando abiliti il dimensionamento simultaneo per una coda, le query idonee vengono inviate al cluster di dimensionamento simultaneo anziché attendere in coda. Per ulteriori informazioni, consulta Utilizzo del dimensionamento della simultaneità.

Livello di simultaneità

Le interrogazioni in una coda vengono eseguite contemporaneamente fino a raggiungere il numero di slot di WLM query, o livello di concorrenza, definito per quella coda. Le query successive quindi attendono in coda.

Nota

WLMil livello di concorrenza è diverso dal numero di connessioni utente simultanee che è possibile effettuare a un cluster. Per ulteriori informazioni, consulta Connessione a un cluster nella Guida alla gestione di Amazon Redshift.

In una WLM configurazione automatica, consigliata, il livello di concorrenza è impostato su Auto. Amazon Redshift alloca dinamicamente la memoria alle query, che successivamente determina quante se ne devono eseguire contemporaneamente. Ciò è basato sulle risorse necessarie sia per le query esecuzione che per quelle in coda. Auto WLM non è configurabile. Per ulteriori informazioni, consulta Implementazione automatica WLM.

In una WLM configurazione manuale, Amazon Redshift alloca staticamente una quantità fissa di memoria a ciascuna coda. La memoria della coda è suddivisa equamente tra gli slot di query. Ad esempio, se a una coda è allocato il 20% della memoria di un cluster e ha 10 slot, a ciascuna query viene allocato il 2% della memoria del cluster. L'allocazione della memoria rimane fissa indipendentemente dal numero di query eseguite contemporaneamente. A causa di questa allocazione fissa di memoria, le query eseguite interamente in memoria quando il numero di slot è 5 potrebbe dover scrivere i risultati intermedi sul disco se il numero degli slot è aumentato a 20. In questo caso, ogni condivisione della memoria della coda viene ridotta da 1/5 a 1/20. L'I/O del disco aggiuntivo potrebbe compromettere le prestazioni.

Il numero massimo degli slot per tutte le code definite dall'utente è 50. Questo limita gli slot totali per tutte le code, inclusa la coda predefinita. L'unica coda che non è soggetta al limite è quella riservata agli utenti con privilegi avanzati.

Per impostazione predefinita, le WLM code manuali hanno un livello di contemporaneità pari a 5. Il carico di lavoro potrebbe beneficiare di un livello di simultaneità più elevato in alcuni casi, come ad esempio il seguente:

  • Se molte piccole query sono costrette ad attendere le query a esecuzione prolungata, crea una coda separata con un numero di slot superiore e assegna le query più piccole a quella coda. Una coda con un livello di simultaneità più alto ha meno memoria allocata per ogni spazio di query, ma le query più piccole richiedono meno memoria.

    Nota

    Se abiliti l'accelerazione delle query brevi (SQA), assegna WLM automaticamente la priorità alle query brevi rispetto a quelle a esecuzione più lunga, quindi non avrai bisogno di una coda separata per le query brevi per la maggior parte dei flussi di lavoro. Per ulteriori informazioni, consulta Utilizzo dall'accelerazione di query brevi.

  • Se hai più query, ognuna delle quali accede ai dati su una singola slice, configura una coda separata per eseguire tali query contemporaneamente. WLM Amazon Redshift assegna query simultanee a sezioni separate, consentendo l'esecuzione di più query in parallelo su più sezioni. Ad esempio, se una query è una semplice aggregazione con un predicato sulla chiave di distribuzione, i dati per la query si troveranno su una singola sezione.

Un esempio manuale WLM

Questo esempio è uno WLM scenario semplice e manuale per mostrare come allocare slot e memoria. Si implementa il manuale WLM con tre code, che sono le seguenti:

  • Coda di importazione dei dati: è impostata per l'importazione dei dati. È allocato il 20% della memoria del cluster e dispone di 5 slot. Pertanto, possono essere eseguite contemporaneamente 5 query in coda e per ciascuna viene allocato il 4% della memoria.

  • Coda data-scientist: progettata per query che richiedono un uso intensivo della memoria. È allocato il 40% della memoria del cluster e dispone di 5 slot. Pertanto, possono essere eseguite contemporaneamente 5 query e per ciascuna viene allocato l'8% della memoria.

  • coda predefinita: è progettata per la maggior parte degli utenti dell'organizzazione. Ciò include i gruppi di vendita e contabilità che in genere eseguono query di breve o media esecuzione e che non sono complicate. È allocato il 40% della memoria del cluster e dispone di 40 slot. 40 query possono essere eseguite contemporaneamente in questa coda, e a ogni query è allocato l'1% della memoria. Questo è il numero massimo di slot che possono essere allocati per questa coda perché tra tutte le code il limite è 50.

Se esegui l'esecuzione automatica WLM e il tuo carico di lavoro richiede più di 15 query per l'esecuzione in parallelo, ti consigliamo di attivare la scalabilità simultanea. Questo perché l'aumento del numero di slot di query oltre 15 potrebbe creare conflitti per le risorse di sistema e limitare la velocità di trasmissione effettiva complessiva di un singolo cluster. Con il dimensionamento simultaneo, puoi eseguire centinaia di query in parallelo fino a un numero configurato di cluster con dimensionamento simultaneo. Il numero di cluster con dimensionamento simultaneo che è possibile utilizzare è controllato da max_concurrency_scaling_clusters. Per ulteriori informazioni sul dimensionamento simultaneo, consultare Utilizzo del dimensionamento della simultaneità.

Per ulteriori informazioni, consulta Miglioramento delle prestazioni della query di .

Gruppi di utenti

Puoi assegnare un set di gruppi di utenti a una coda specificando il nome di ogni gruppo di utenti o utilizzando i caratteri jolly. Quando un membro di un gruppo utenti elencato esegue una query, quella query viene eseguita nella coda corrispondente. Non esiste un limite impostato per il numero di gruppi di utenti che possono essere assegnati a una coda. Per ulteriori informazioni, consultare Assegnazione delle query alle code in base ai gruppi di utenti.

Gruppi di query

Puoi assegnare un set di gruppi di query a una coda specificando il nome di ogni gruppo di query o utilizzando i caratteri jolly. Un gruppo di query è semplicemente un'etichetta. In fase di runtime, puoi assegnare l'etichetta del gruppo di query a una serie di query. Qualsiasi query che viene assegnata a un gruppo di query elencato verrà eseguita nella coda corrispondente. Non esiste un limite definito per il numero di gruppi di query che possono essere assegnati a una coda. Per ulteriori informazioni, consulta Assegnazione di una query a un gruppo di utenti.

Caratteri jolly

Se i caratteri jolly sono abilitati nella configurazione della WLM coda, è possibile assegnare gruppi di utenti e gruppi di query a una coda singolarmente o utilizzando caratteri jolly in stile Unix shell. La corrispondenza del modello fa distinzione tra maiuscole e minuscole.

Ad esempio, il carattere jolly “*” corrisponde a qualsiasi numero di caratteri. Pertanto, se aggiungi dba_* all'elenco dei gruppi di utenti di una coda, qualsiasi query eseguita dagli utenti che appartiene a un gruppo con un nome che inizia con dba_ verrà assegnata a quella coda. Un paio di esempi sono dba_admin o DBA_primary. Il carattere jolly “?” corrisponde a qualsiasi carattere singolo. Pertanto, se la coda include il gruppo di utenti dba?1, i gruppi di utenti denominati dba11 e dba21 corrisponderanno, ma non quelli chiamati dba12.

I caratteri jolly sono disattivati per impostazione predefinita.

WLMpercentuale di memoria da usare

In una WLM configurazione automatica, la percentuale di memoria è impostata suauto. Per ulteriori informazioni, consulta Implementazione automatica WLM.

In una WLM configurazione manuale, per specificare la quantità di memoria disponibile allocata a una query, è possibile impostare il WLM Memory Percent to Use parametro. Per impostazione predefinita, a ogni coda definita dall'utente viene allocata una porzione uguale della memoria disponibile per le query definite dall'utente. Ad esempio, se hai quattro code definite dall'utente, a ciascuna coda viene assegnato il 25 percento della memoria disponibile. La coda dell'utente con privilegi avanzati ha una sua memoria allocata che non può essere modificata. Per modificare l'allocazione, assegni una percentuale intera di memoria a ciascuna coda, fino a un totale del 100 percento. Qualsiasi memoria non allocata è gestita da Amazon Redshift e può essere temporaneamente assegnata a una coda, se la coda richiede memoria aggiuntiva per l'elaborazione.

Ad esempio, se configuri quattro code, puoi allocare la memoria come segue: 20 percento, 30 percento, 15 percento, 15 percento. Il restante 20 percento è non assegnato ed è gestito dal servizio.

WLMtimeout

WLMtimeout (max_execution_time) è obsoleto. Crea invece una regola di monitoraggio delle query (QMR) che utilizzi query_execution_time per limitare il tempo di esecuzione trascorso per una query. Per ulteriori informazioni, consulta WLMregole di monitoraggio delle interrogazioni.

Per limitare il periodo di tempo consentito alle interrogazioni in una determinata WLM coda, è possibile impostare il valore di WLM timeout per ogni coda. Il parametro di timeout specifica la quantità di tempo, in millisecondi, che Amazon Redshift attende per l'esecuzione di una query prima di annullare o saltare la query. Il timeout si basa sul tempo di esecuzione della query e non include il tempo trascorso in attesa in una coda.

WLMtenta di eseguire istruzioni hop CREATETABLEAS (CTAS) e query di sola lettura, come le istruzioni. SELECT Le query che non possono essere saltate vengono annullate. Per ulteriori informazioni, consulta WLMsalto nella coda delle interrogazioni.

WLMil timeout non si applica a una query che ha raggiunto lo stato di ritorno. Per visualizzare lo stato di una query, consultare la tabella di sistema STV_WLM_QUERY_STATE. COPYle istruzioni e le operazioni di manutenzione, come ANALYZE eVACUUM, non sono soggette a WLM timeout.

La funzione di WLM timeout è simile al parametro di statement_timeout configurazione. La differenza è che, laddove il parametro di statement_timeout configurazione si applica all'intero cluster, il WLM timeout è specifico per una singola coda nella configurazione. WLM

Se statement_timeout viene specificato anche, viene utilizzato il valore inferiore tra statement_timeout e WLM timeout (max_execution_time).

Regole di monitoraggio delle query

Le regole di monitoraggio delle query definiscono i limiti di prestazioni basati sulle metriche per le WLM code e specificano l'azione da intraprendere quando una query supera tali limiti. Ad esempio, per una coda dedicata alle query di breve durata, puoi creare una regola che annulla le query eseguite per più di 60 secondi. Per tracciare le query mal progettate, potresti avere un'altra regola che registra le query che contengono cicli annidati. Per ulteriori informazioni, consulta WLMregole di monitoraggio delle interrogazioni.