WLMregole di monitoraggio delle interrogazioni - 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à.

WLMregole di monitoraggio delle interrogazioni

Nella gestione del carico di lavoro di Amazon Redshift (WLM), le regole di monitoraggio delle query definiscono limiti prestazionali basati su 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.

Le regole di monitoraggio delle query vengono definite come parte della configurazione di gestione del carico di lavoro (). WLM Puoi definire fino a 25 regole per ogni coda, con un limite di 25 regole per tutte le code. Ogni regola include fino a tre condizioni o predicati e un'azione. Un predicato è formato da un parametro, una condizione di confronto (=, < o >) e un valore. Se tutti i predicati di una regola sono soddisfatti, viene attivata l'azione di quella regola. Le possibili azioni delle regole sono registrazione, hop e interruzione, come discusso di seguito.

Le regole in una determinata coda si applicano solo alle query in esecuzione in quella coda. Una regola è indipendente dalle altre regole.

WLMvaluta le metriche ogni 10 secondi. Se viene attivata più di una regola nello stesso periodo, WLM avvia l'azione più grave: abort, hop, quindi log. Se l'azione è hop o interruzione, viene registrata e la query viene rimossa dalla coda. Se l'azione è registrazione, la query continua l'esecuzione nella coda. WLMavvia una sola azione di registro per query per regola. Se la coda contiene altre regole, tali regole rimangono in vigore. Se l'azione è hop e la query viene instradata su un'altra coda, si applicano le regole della nuova coda. Per ulteriori informazioni sul monitoraggio delle query e sulle operazioni di tracciamento effettuate su query specifiche, consulta la raccolta di esempi all'indirizzo Utilizzo dall'accelerazione di query brevi.

Quando tutti i predicati di una regola vengono soddisfatti, WLM scrive una riga nella tabella di STL_WLM_RULE_ACTION sistema. Inoltre, Amazon Redshift registra i parametri delle query per le query attualmente in esecuzione su STV_QUERY_METRICS. I parametri delle query completate sono archiviati in STL_QUERY_METRICS.

Definizione di una regola di monitoraggio delle query

Le regole di monitoraggio delle interrogazioni vengono create come parte della WLM configurazione, che vengono definite come parte della definizione del gruppo di parametri del cluster.

È possibile creare regole utilizzando AWS Management Console o utilizzando a livello di codice. JSON

Nota

Se scegli di creare regole a livello di codice, ti consigliamo vivamente di utilizzare la console per generare le regole da includere nella JSON definizione del gruppo di parametri. Per ulteriori informazioni, consulta Creazione o modifica di una regola di monitoraggio delle query con la console e Configurazione dei valori dei parametri tramite la AWS CLI nella Guida alla gestione di Amazon Redshift.

Per definire una regola di monitoraggio della query, è necessario specificare i seguenti elementi:

  • Un nome di regola: i nomi delle regole devono essere univoci all'interno della WLM configurazione. Possono essere composti da un massimo di 32 caratteri alfanumerici o caratteri di sottolineatura e non possono contenere spazi o virgolette. Puoi avere fino a 25 regole per coda, che è anche il limite complessivo di tutte le code.

  • Uno o più predicati: ogni regola può avere fino a tre predicati. Se tutti i predicati di una regola sono soddisfatti, viene attivata l'azione associata. Un predicato è definito da un nome parametro, un operatore (=, < o >) e un valore. Un esempio è query_cpu_time > 100000. Per un elenco di parametri ed esempi di valori per parametri diversi, vedi Metriche per il monitoraggio delle query per Amazon Redshift dopo questa sezione.

  • Un'azione: se viene attivata più di una regola, WLM sceglie la regola con l'azione più severa. Le possibili azioni, in ordine crescente di gravità, sono:

    • Registro: registra le informazioni sulla query nella tabella di ACTION sistema STL _ WLM _ RULE _. Usa l'azione di registrazione quando vuoi scrivere solo un record di log. WLMcrea al massimo un registro per query, per regola. Dopo un'azione di registro, le altre regole rimangono in vigore e WLM continuano a monitorare la query.

    • Hop (disponibile solo con il manualeWLM): registra l'azione e salta la query alla successiva coda corrispondente. Se non esiste alcuna coda corrispondente, la query viene annullata. QMRsalta solo le istruzioni CREATETABLEAS (CTAS) e le query di sola lettura, come le istruzioni. SELECT Per ulteriori informazioni, consulta WLMsalto nella coda delle interrogazioni.

    • Interrompi: registra l'azione e annulla la query. QMRnon interrompe COPY le istruzioni e le operazioni di manutenzione, come e. ANALYZE VACUUM

    • Modifica priorità (disponibile solo con modalità automaticaWLM): modifica la priorità di una query.

Per limitare il tempo di esecuzione delle query, consigliamo di creare una regola di monitoraggio delle query anziché utilizzare il WLM timeout. Ad esempio, è possibile impostare max_execution_time un valore di 50.000 millisecondi, come illustrato nel frammento seguente. JSON

"max_execution_time": 50000

Tuttavia, consigliamo di definire una regola di monitoraggio delle query equivalente che sia impostata su 50 secondi, come query_execution_time mostrato nel frammento seguente. JSON

"rules": [ { "rule_name": "rule_query_execution", "predicate": [ { "metric_name": "query_execution_time", "operator": ">", "value": 50 } ], "action": "abort" } ]

Per le fasi per creare o modificare una regola di monitoraggio delle query, consulta Creazione o modifica di una regola di monitoraggio delle query con la console e Proprietà nel parametro wlm_json_configuration nella Guida alla gestione di Amazon Redshift.

Ulteriori informazioni sulle regole di monitoraggio delle query sono disponibili nei seguenti argomenti:

Metriche per il monitoraggio delle query per Amazon Redshift

Nella tabella seguente vengono descritti i parametri usati nelle regole di monitoraggio delle query. Questi parametri sono diversi da quelli memorizzati nelle tabelle di sistema STV_QUERY_METRICS e STL_QUERY_METRICS.

Per un determinato parametro, la soglia delle prestazioni viene tracciata a livello di query o di segmento. Per ulteriori informazioni sui segmenti e sulle fasi, consultare Pianificazione di query e flusso di lavoro di esecuzione.

Nota

Il parametro WLMtimeout è diverso dalle regole di monitoraggio delle query.

Parametro Nome Descrizione
Tempo di interrogazione CPU query_cpu_time CPUtempo utilizzato dalla query, in secondi. CPU timeè distinto daQuery execution time.

I valori validi sono compresi nell'intervallo 0-999.999.

Blocchi letti query_blocks_read Numero di blocchi di dati da 1 MB letti dalla query.

I valori validi sono compresi nell'intervallo 0-1.048.575.

Analizza conteggio righe scan_row_count

Il numero di righe in una fase di scansione. Il conteggio delle righe è il numero totale di righe generate prima di aver applicato filtri alle righe contrassegnate per l'eliminazione (righe fantasma) e prima dell'applicazione di filtri di query definiti dall'utente.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Tempo di esecuzione query query_execution_time Tempo di esecuzione trascorso per una query, in secondi. Il tempo di esecuzione non include il tempo trascorso in attesa in una coda.

I valori validi sono compresi nell'intervallo 0-86.399.

Tempo nella coda di query query_queue_time Tempo trascorso in attesa in coda, in secondi.

I valori validi sono compresi nell'intervallo 0-86.399.

CPUutilizzo query_cpu_usage_percent Percentuale di CPU capacità utilizzata dalla query.

I valori validi sono compresi nell'intervallo 0-6.399.

Memoria su disco query_temp_blocks_to_disk Spazio su disco temporaneo utilizzato per scrivere risultati intermedi, in blocchi da 1 MB.

I valori validi sono compresi nell'intervallo 0-319.815.679.

CPUinclinazione cpu_skew Il rapporto tra l'CPUutilizzo massimo per ogni slice e l'CPUutilizzo medio per tutte le slice. Questo parametro viene definito a livello di segmento.

I valori validi sono compresi nell'intervallo 0-99.

Differenza I/O io_skew Il rapporto tra i blocchi massimi letti (I/O) per ogni sezione di blocchi medi letti per tutte le sezioni. Questo parametro viene definito a livello di segmento.

I valori validi sono compresi nell'intervallo 0-99.

Righe unite join_row_count Il numero di righe elaborate in una fase di unione.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Conteggio righe unione loop nidificati nested_loop_join_row_count Il numero o le righe di un'unione loop nidificate.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Restituisci conteggio righe return_row_count Il numero di righe restituite dalla query.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Tempo di esecuzione segmento segment_execution_time Tempo di esecuzione trascorso per un singolo segmento, in secondi. Per evitare o ridurre gli errori di campionamento, includi segment_execution_time > 10 nelle regole.

I valori validi sono compresi nell'intervallo 0-86.388.

Analizza conteggio righe Spectrum spectrum_scan_row_count Il numero di righe di dati in Amazon S3 scansionate da una query di Amazon Redshift Spectrum.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Dimensione analisi Spectrum spectrum_scan_size_mb La dimensione in MB dei dati in Amazon S3 scansionati da una query Amazon Redshift Spectrum.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Priorità delle query query_priority La priorità della query.

I valori validi sono HIGHEST, HIGH, NORMAL, LOW e LOWEST. Quando confronti query_priority utilizzando gli operator maggiore di (>) e inferiore a (<) operators, HIGHEST è maggiore di HIGH, HIGH è maggiore di NORMAL e così via.

Nota
  • L'operazione hop non è supportata con il predicato query_queue_time. Vale a dire che le regole definite per l'hop quando un predicato query_queue_time viene soddisfatto vengono ignorate.

  • I tempi di esecuzione dei segmenti brevi possono causare errori di campionamento con alcuni parametri, ad esempio io_skew e query_cpu_usage_percent. Per evitare o ridurre gli errori di campionamento, includi il tempo di esecuzione dei segmenti nelle regole. Un buon punto di partenza è segment_execution_time > 10.

La vista SVL_QUERY_METRICS mostra i parametri per le query completate. La vista SVL_QUERY_METRICS_SUMMARY mostra i valori massimi dei parametri per le query completate. Utilizza i valori in queste viste come aiuto per determinare i valori di soglia per la definizione delle regole di monitoraggio delle query.

Metriche per il monitoraggio delle query per Amazon Redshift serverless

Nella tabella seguente vengono descritti i parametri utilizzati nelle regole per il monitoraggio delle query per Amazon Redshift serverless.

Parametro Nome Descrizione
Tempo di interrogazione CPU max_query_cpu_time CPUtempo utilizzato dalla query, in secondi. CPU timeè distinto daQuery execution time.

I valori validi sono compresi nell'intervallo 0-999.999.

Blocchi letti max_query_blocks_read Numero di blocchi di dati da 1 MB letti dalla query.

I valori validi sono compresi nell'intervallo 0-1.048.575.

Analizza conteggio righe max_scan_row_count

Il numero di righe in una fase di scansione. Il conteggio delle righe è il numero totale di righe generate prima di aver applicato filtri alle righe contrassegnate per l'eliminazione (righe fantasma) e prima dell'applicazione di filtri di query definiti dall'utente.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Tempo di esecuzione query max_query_execution_time

Tempo di esecuzione trascorso per una query, in secondi. Il tempo di esecuzione non include il tempo trascorso in attesa in una coda. Se una query supera il tempo di esecuzione impostato, Amazon Redshift Serverless la arresta.

I valori validi sono compresi nell'intervallo 0-86.399.

Tempo nella coda di query max_query_queue_time Tempo trascorso in attesa in coda, in secondi.

I valori validi sono compresi nell'intervallo 0-86.399.

CPUutilizzo max_query_cpu_usage_percent Percentuale di CPU capacità utilizzata dalla query.

I valori validi sono compresi nell'intervallo 0-6.399.

Memoria su disco max_query_temp_blocks_to_disk Spazio su disco temporaneo utilizzato per scrivere risultati intermedi, in blocchi da 1 MB.

I valori validi sono compresi nell'intervallo 0-319.815.679.

Righe unite max_join_row_count Il numero di righe elaborate in una fase di unione.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Conteggio righe unione loop nidificati max_nested_loop_join_row_count Il numero o le righe di un'unione loop nidificate.

I valori validi sono compresi nell'intervallo 0-999.999.999.999.999.

Nota
  • L'operazione hop non è supportata con il predicato max_query_queue_time. Vale a dire che le regole definite per l'hop quando un predicato max_query_queue_time viene soddisfatto vengono ignorate.

  • I tempi di esecuzione dei segmenti brevi possono causare errori di campionamento con alcuni parametri, ad esempio max_io_skew e max_query_cpu_usage_percent.

Modelli di regole di monitoraggio delle query

Quando si aggiunge una regola tramite la console Amazon Redshift, è possibile scegliere di creare una regola da un modello predefinito. Amazon Redshift crea una nuova regola con un set di predicati e popola i predicati con i valori di default. L'azione predefinita è registrazione. Puoi modificare i predicati e l'azione per soddisfare il tuo caso d'uso.

La tabella seguente elenca i modelli disponibili.

Nome modello Predicati Descrizione
Nested loop join nested_loop_join_row_count > 100 Un'unione loop nidificata potrebbe indicare un predicato di unione incompleto che spesso determina la restituzione di un set molto grande (un prodotto cartesiano). Utilizza un conteggio di riga basso per trovare in anticipo una query con potenzialmente un eccessivo tempo di esecuzione.
La query restituisce un numero elevato di righe return_row_count > 1000000 Se dedichi una coda a query semplici a esecuzione breve, è possibile includere una regola che trova le query che restituiscono un conteggio elevato di righe. Il modello utilizza un valore predefinito di 1 milione di righe. Per alcuni sistemi, potresti considerare un milione di righe un conteggio elevato oppure in un sistema più grande, un miliardo o più di righe potrebbero essere un conteggio elevato.
Esegui l'unione con un numero elevato di righe join_row_count > 1000000000 Una fase di unione che comporta un numero insolitamente elevato di righe potrebbe indicare la necessità di filtri più restrittivi. Il modello utilizza un valore predefinito di 1 miliardo di righe. Per una coda ad hoc (una tantum) destinata a query semplici e veloci, è possibile utilizzare un numero inferiore.
Utilizzo del disco intensivo durante la scrittura di risultati intermedi query_temp_blocks_to_disk > 100000 Quando attualmente l'esecuzione delle query utilizza più del sistema disponibileRAM, il motore di esecuzione delle query scrive i risultati intermedi su disco (memoria inutilizzata). In genere, questa condizione è il risultato di una query di tipo rogue che di solito è anche la query che utilizza la maggior parte dello spazio su disco. La soglia accettabile per l'utilizzo del disco varia in base al tipo di nodo del cluster e al numero di nodi. Il modello utilizza un valore predefinito di 100.000 blocchi o 100 GB. Per un piccolo cluster, è possibile utilizzare un numero inferiore.
Query di lunga durata con differenza I/O elevata segment_execution_time > 120 e io_skew > 1.30 La differenza I/O si verifica quando una sezione del nodo ha una velocità I/O molto più alta rispetto alle altre sezioni. Come punto di partenza, una differenza di 1,30 (1,3 volte la media) è considerata alta. La differenza I/O elevata non è sempre un problema, ma se combinata con un tempo di query a esecuzione prolungata potrebbe indicare un problema relativo allo stile di distribuzione o alla chiave di ordinamento.

Tabelle e viste di sistema per le regole di monitoraggio delle query

Quando tutti i predicati di una regola vengono soddisfatti, WLM scrive una riga nella tabella di sistema. STL_WLM_RULE_ACTION Questa riga contiene i dettagli della query che ha attivato la regola e l'operazione derivante.

Inoltre, Amazon Redshift registra i parametri per le query per le seguenti tabelle e viste di sistema.