DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Redshift Concurrency Scaling

Redshift Concurrency Scaling

Introduzione

Amazon Redshift è un potente data warehouse che aiuta ad analizzare grandi quantità di dati rapidamente. Man mano che i volumi di dati crescono e le esigenze degli utenti aumentano, mantenere prestazioni ottimali delle query può diventare una sfida. È qui che entra in gioco il Redshift Concurrency Scaling.

Questo articolo coprirà le basi del Redshift Concurrency Scaling, inclusi comandi di configurazione e parametri. Discuteremo anche come aiuta a distribuire il carico di lavoro per applicazioni ad alte prestazioni e alta disponibilità.

Che Cos’è il Redshift Concurrency Scaling?

Il Redshift Concurrency Scaling regola la capacità del cluster per più query di lettura contemporaneamente, facendo una grande differenza. Cambia quante domande il gruppo può gestire contemporaneamente, assicurando risposte sempre rapide e coerenti.

Come funziona? Redshift fornisce automaticamente cluster temporanei aggiuntivi quando il Concurrency Scaling è attivo. Ciò accade ogni volta che il numero di query utente simultanee supera la soglia della coda configurata. Gruppi temporanei leggono le query che Redshift può gestire solo in coda.

Il tuo gruppo principale può continuare a lavorare su altre attività senza interruzioni. Una volta che la dimensione della coda scende al di sotto della soglia, il sistema termina automaticamente i cluster temporanei per ottimizzare i costi.

Configurazione del Concurrency Scaling

Per sfruttare la potenza del Redshift Concurrency Scaling, è necessario abilitarlo sul cluster. Ecco come fare:

1. Assicurarsi che il cluster stia funzionando con un nodo di tipo ra3.16xlarge o superiore.

2. Eseguire il seguente comando SQL per abilitare il Concurrency Scaling:

ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING ENABLED;

3. Configurare la modalità di Concurrency Scaling usando il comando SET. Sono disponibili due modalità:

– AUTO: Redshift gestisce automaticamente il numero di cluster temporanei in base al carico di lavoro. Questa è la modalità predefinita.

– MANUAL: Specifica il numero massimo di cluster temporanei.

4. Per impostare la modalità, utilizzare il seguente comando:

ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MODE 'AUTO|MANUAL';

5. Se si utilizza la modalità MANUAL, impostare il numero massimo di cluster temporanei:

ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MAX_CLUSTERS <number>;

Distribuzione del Carico di Lavoro con le Code di Query

Il Redshift Concurrency Scaling lavora in collaborazione con le code di query per distribuire efficacemente i carichi di lavoro tra il cluster principale e i cluster temporanei. Le code di query consentono di dare priorità e gestire diversi tipi di query in base alla loro importanza e alle risorse necessarie.

Per impostazione predefinita, Redshift ha una singola coda predefinita. Tuttavia, è possibile creare code aggiuntive per segregare e dare priorità ai carichi di lavoro. Ecco un esempio di creazione di una nuova coda di query:

CREATE QUEUE reporting_queue
PRIORITY 5
QUERY_GROUP 'reporting';

In questo esempio, si crea una coda di reporting con una priorità di 5. Successivamente, si collega la coda di reporting a un gruppo di query chiamato ‘reporting’. Le query inviate a questa coda avranno priorità maggiore rispetto a quelle nella coda predefinita.

Per instradare le query a code specifiche, è possibile utilizzare il comando SET:

SET query_group TO 'reporting';

Questa azione imposta il gruppo di query della sessione corrente su ‘reporting’, e il sistema instraderà le query successive alla coda associata.

Parametri di Concurrency Scaling per l’Alta Disponibilità

Quando si configura il Redshift Concurrency Scaling per applicazioni ad alta disponibilità, ci sono diversi parametri chiave da considerare:

  1. max_concurrency_scaling_clusters: Questo parametro specifica il numero massimo di cluster temporanei che possono essere forniti. Impostarlo in base alle esigenze del carico di lavoro e ai vincoli di budget.
  2. concurrency_scaling_mode: Come menzionato in precedenza, questo parametro determina se il Concurrency Scaling è gestito automaticamente o manualmente.
  3. wlm_query_slot_count: Questo parametro imposta il numero di slot di query (query simultanee) per cluster. Regolarlo in base alle caratteristiche del carico di lavoro e alle risorse disponibili.
  4. query_group: Usare i gruppi di query per instradare le query a code specifiche e dare priorità ai carichi di lavoro critici.

Ecco un esempio di configurazione per un setup ad alta disponibilità:

ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MAX_CLUSTERS 5;
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MODE 'AUTO';
ALTER CLUSTER <your-cluster-name> SET wlm_query_slot_count 50;
CREATE QUEUE critical_queue
PRIORITY 10
QUERY_GROUP 'critical';
CREATE QUEUE reporting_queue
PRIORITY 5
QUERY_GROUP 'reporting';

In questo esempio, si avranno fino a 5 cluster temporanei. Inoltre, si attiverà il Concurrency Scaling automatico. Inoltre, si assegneranno 50 slot di query per cluster. Si creano due code, critical_queue e reporting_queue, con priorità diverse per gestire separatamente i carichi di lavoro critici e di reporting.

Esempio del Mondo Reale

Consideriamo un esempio reale in cui una compagnia e-commerce utilizza Redshift per le loro necessità di data warehousing. Durante i periodi di vendita intensa, ricevono molte query da diversi dipartimenti come vendite, inventario e analisi dei clienti.

Per gestire questo aumento del carico di lavoro, abilitano il Redshift Concurrency Scaling con la seguente configurazione:

ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING ENABLED;
ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MODE 'AUTO';
ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MAX_CLUSTERS 10;
CREATE QUEUE sales_analytics_queue
PRIORITY 8
QUERY_GROUP 'sales_analytics';
CREATE QUEUE inventory_queue
PRIORITY 6
QUERY_GROUP 'inventory';
CREATE QUEUE customer_segmentation_queue
PRIORITY 4
QUERY_GROUP 'customer_segmentation';

Quando ci sono troppe query in esecuzione contemporaneamente, Redshift creerà più cluster temporanei per gestire il carico di lavoro. Le query sono distribuite efficacemente tra il cluster principale e i cluster temporanei in base ai gruppi di query e alle priorità delle code assegnati.

Di conseguenza, la compagnia e-commerce mantiene prestazioni ottimali delle query durante i periodi di picco, assicurando intuizioni tempestive per decisioni aziendali critiche. Le query di analisi delle vendite ricevono la priorità più alta, seguite dalle query di gestione dell’inventario e di segmentazione dei clienti.

Conclusioni

Il Redshift Concurrency Scaling consente di regolare la capacità del cluster per gestire aumenti improvvisi di query in modo efficiente. Sfruttando le code di query e configurando l’allocazione delle risorse, è possibile distribuire efficacemente i carichi di lavoro e dare priorità alle query critiche per applicazioni ad alte prestazioni e alta disponibilità.

Ricorda di considerare fattori come le caratteristiche del carico di lavoro, la disponibilità delle risorse e il budget quando configuri il Concurrency Scaling. Con la configurazione giusta, puoi sbloccare il pieno potenziale di Redshift e offrire prestazioni di query velocissime ai tuoi utenti.

Per ulteriori informazioni sul Redshift Concurrency Scaling, consulta la documentazione ufficiale AWS:

DataSunrise: Migliorare la Sicurezza e la Conformità del Database

Mentre Redshift offre funzionalità robuste per prestazioni e scalabilità, garantire la sicurezza e la conformità dei tuoi dati è altrettanto importante. DataSunrise offre strumenti facili da usare e flessibili per la sicurezza del database, il mascheramento e la conformità. Con DataSunrise, puoi implementare configurazioni ad alta disponibilità e tutelare i tuoi dati sensibili.

Per saperne di più sulle soluzioni di DataSunrise e vederle in azione, visita il nostro sito web e programma la tua dimostrazione personalizzata oggi stesso!

Successivo

Sicurezza SQL Server

Sicurezza SQL Server

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Informazioni generali:
[email protected]
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
[email protected]